ATG transient property

Hi All,
What is the use of transient property in  userProfile.xml????  properties out side the table inside item-descriptor.
1) When do we create a transient property in the xyzRepository.xml files???
2)What is the use of these transient property???
Regards 

Hi,
Profile has a transient property 'securityStatus' which is used to check the security status (possible values 0-6). This is not stored in DB but is available and set as soon as a Profile item is created.
More details about security status -> Security Status
This is one real time example of transient property.
Hope this helps.
Keep posting the updates / questions.
Thanks,
Gopinath Ramasamy

Similar Messages

  • Using Transient Property as display-property

    Hi,
    is transient property should not be used as display-property in item descriptor? we were using it in ATG 9.2 somehow it is not working in ATG 10.2.
    if we use transient property as display property in BCC we are getting exception that
    java.lang.ClassCastException: vodafone.utils.StringConcatenatePropertyDescriptor cannot be cast to atg.adapter.gsa.GSAPropertyDescriptor
    So i have modified StringConcatenatePropertyDescriptor to extend GSAPropertyDescriptor, now getting different exception..
    In ATG 10.2 display-property must be persisted?
    java.lang.NullPointerException
    [8Cat atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.createElementState(RepositoryAssetPropertyServiceImpl.java:1204)
    [8Cat atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.getCollectionPropertyValues(RepositoryAssetPropertyServiceImpl.java:1424)
    [8Cat atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.getCollectionPropertyPage(RepositoryAssetPropertyServiceImpl.java:1370)
    [8Cat atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.createCollectionPropertyState(RepositoryAssetPropertyServiceImpl.java:868)
    [8Cat atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.createPropertyState(RepositoryAssetPropertyServiceImpl.java:394)
    [8Cat atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetPropertyState(AssetEditorStateFactory.java:318)
    [8Cat atg.remote.assetmanager.editor.service.PropertyEditorAssetViewServiceImpl.createAssetViewState(PropertyEditorAssetViewServiceImpl.java:212)
    [8Cat atg.remote.assetmanager.editor.service.RepositoryAssetViewServiceImpl.createAssetViewState(RepositoryAssetViewServiceImpl.java:101)
    [8Cat atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetViewState(AssetEditorStateFactory.java:284)
    [8Cat atg.remote.assetmanager.editor.service.AssetEditorStateFactory.initializeViewInfo(AssetEditorStateFactory.java:182)
    [8Cat atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetEditorState(AssetEditorStateFactory.java:104)
    [8Cat atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetEditorState(AssetEditorStateFactory.java:84)
    [8Cat atg.remote.assetmanager.editor.service.AssetEditorService.getAsset(AssetEditorService.java:276)

    Hi,
    writable attribute is set to false. Exception trace is
    java.lang.ClassCastException: vodafone.utils.StringConcatenatePropertyDescriptor cannot be cast to atg.adapter.gsa.GSAPropertyDescriptor
         at atg.adapter.gsa.GSAItemDescriptor.getGSAPropertyDescriptor(GSAItemDescriptor.java:9862)
         at atg.adapter.gsa.GSAItemDescriptor.executeSingleQuery(GSAItemDescriptor.java:8962)
         at atg.adapter.version.VersionItemDescriptor.executeQueryOnLine(VersionItemDescriptor.java:1219)
         at atg.adapter.version.VersionItemDescriptor.executeSingleQuery(VersionItemDescriptor.java:1142)
         at atg.adapter.version.VersionItemDescriptor.executeQuery(VersionItemDescriptor.java:972)
         at atg.adapter.version.VersionItemDescriptor.executeQuery(VersionItemDescriptor.java:438)
         at atg.adapter.version.VersionView.executeUncachedQuery(VersionView.java:154)
         at atg.repository.query.QueryCache.executeUncachedQuery(QueryCache.java:693)
         at atg.repository.query.QueryCache.populateEntry(QueryCache.java:905)
         at atg.repository.query.QueryCache.executeCachedQuery(QueryCache.java:433)
         at atg.repository.RepositoryViewImpl.executeQuery(RepositoryViewImpl.java:344)
         at atg.adapter.gsa.GSAView.executeQuery(GSAView.java:285)
         at atg.remote.assetmanager.common.service.ServiceUtils.getMultiValuedPropertyMembers(ServiceUtils.java:1139)
         at atg.remote.assetmanager.common.service.ServiceUtils.getMultiValuedPropertyMembers(ServiceUtils.java:954)
         at atg.remote.assetmanager.common.service.PropertyMirrorList.loadFullList(PropertyMirrorList.java:297)
         at atg.remote.assetmanager.common.service.PropertyMirrorList.ensureLoaded(PropertyMirrorList.java:197)
         at atg.remote.assetmanager.common.service.PropertyMirrorList.get(PropertyMirrorList.java:543)
         at atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.getCollectionPropertyValues(RepositoryAssetPropertyServiceImpl.java:1424)
         at atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.getCollectionPropertyPage(RepositoryAssetPropertyServiceImpl.java:1370)
         at atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.createCollectionPropertyState(RepositoryAssetPropertyServiceImpl.java:868)
         at atg.remote.assetmanager.editor.service.RepositoryAssetPropertyServiceImpl.createPropertyState(RepositoryAssetPropertyServiceImpl.java:394)
         at atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetPropertyState(AssetEditorStateFactory.java:318)
         at atg.remote.assetmanager.editor.service.PropertyEditorAssetViewServiceImpl.createAssetViewState(PropertyEditorAssetViewServiceImpl.java:212)
         at atg.remote.assetmanager.editor.service.RepositoryAssetViewServiceImpl.createAssetViewState(RepositoryAssetViewServiceImpl.java:101)
         at atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetViewState(AssetEditorStateFactory.java:284)
         at atg.remote.assetmanager.editor.service.AssetEditorStateFactory.initializeViewInfo(AssetEditorStateFactory.java:182)
         at atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetEditorState(AssetEditorStateFactory.java:104)
         at atg.remote.assetmanager.editor.service.AssetEditorStateFactory.createAssetEditorState(AssetEditorStateFactory.java:84)
         at atg.remote.assetmanager.editor.service.AssetEditorService.getAsset(AssetEditorService.java:276)
         at sun.reflect.GeneratedMethodAccessor524.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:421)
         at atg.flex.messaging.services.TransactionalJavaAdapter.invoke(TransactionalJavaAdapter.java:140)
         at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
         at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
         at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
         at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
         at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
         at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
         at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
         at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
         at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278)
         at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at atg.servlet.pipeline.TailPipelineServlet.service(TailPipelineServlet.java:161)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.pipeline.DispatcherPipelineServletImpl.service(DispatcherPipelineServletImpl.java:253)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.http.CookieBufferServlet.service(CookieBufferServlet.java:97)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.userprofiling.ExpiredPasswordServlet.service(ExpiredPasswordServlet.java:356)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.pipeline.MimeTyperPipelineServlet.service(MimeTyperPipelineServlet.java:206)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.droplet.DropletEventServlet.service(DropletEventServlet.java:565)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.epub.servlet.LocaleServlet.service(LocaleServlet.java:63)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.epub.servlet.ProjectServlet.service(ProjectServlet.java:87)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.epub.servlet.PublishingSecurityServlet.service(PublishingSecurityServlet.java:58)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.commerce.order.CommerceCommandServlet.service(CommerceCommandServlet.java:128)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.commerce.promotion.PromotionServlet.service(PromotionServlet.java:191)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.userprofiling.AccessControlServlet.service(AccessControlServlet.java:655)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.sessionsaver.SessionSaverServlet.service(SessionSaverServlet.java:2425)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.userprofiling.PageEventTriggerPipelineServlet.service(PageEventTriggerPipelineServlet.java:169)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.multisite.SiteSessionEventTriggerPipelineServlet.service(SiteSessionEventTriggerPipelineServlet.java:139)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.userprofiling.SessionEventTrigger.service(SessionEventTrigger.java:477)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.userprofiling.ProfilePropertyServlet.service(ProfilePropertyServlet.java:208)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.userprofiling.ProfileRequestServlet.service(ProfileRequestServlet.java:437)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.pipeline.CachePreventionServlet.service(CachePreventionServlet.java:119)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.pipeline.DynamoPipelineServlet.service(DynamoPipelineServlet.java:469)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.pipeline.URLArgumentPipelineServlet.service(URLArgumentPipelineServlet.java:280)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.pipeline.PathAuthenticationPipelineServlet.service(PathAuthenticationPipelineServlet.java:370)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.userprofiling.sso.PassportServlet.service(PassportServlet.java:554)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.security.ThreadUserBinderServlet.service(ThreadUserBinderServlet.java:91)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.dtm.TransactionPipelineServlet.service(TransactionPipelineServlet.java:212)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.multisite.SiteContextPipelineServlet.service(SiteContextPipelineServlet.java:302)
         at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
         at atg.servlet.pipeline.HeadPipelineServlet.passRequest(HeadPipelineServlet.java:1174)
         at atg.servlet.pipeline.HeadPipelineServlet.service(HeadPipelineServlet.java:857)
         at atg.servlet.pipeline.PipelineableServletImpl.service(PipelineableServletImpl.java:250)
         at atg.filter.dspjsp.PageFilter.doFilter(PageFilter.java:263)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    Thanks
    Gopi
    Edited by: gopivemula on May 21, 2012 11:58 PM
    Edited by: gopivemula on May 21, 2012 11:59 PM

  • Retrieve a transient property in a repository

    How to retrieve a transient property in a repository? I have tried using Repository.getPropertyValue("propertyName"), but it is not working.

    Transient properties are like normal properties in repositories only difference they are not persisted to database.
    The getPropertyValue will work for transient properties if they have any value set on them for that request/session.
    Are you getting any errors/exceptions?

  • Livecycle/Dataservices 2.6.1 [Transient] property

    Hi Guys and Girls
    I am using livecyle 2.6.1 with AIR 2.0.2 and a java backend, with the flex 3.4 SDK.
    I have a managed collection with a property that has a [Transient]  variable set which is used as a flag for products that have been  ordered.This variable is only used locally.
    This collection/dataservice connection has been set to autoSync enabled, however when I change this flag the collection is updated to the server, is there a way to have this changed to not update to the collection to the server when this flag is set.
    I thought (wrongly apparently) having a property denoted as [Transient] was to avoid this default behaviour.
            [Transient]
            public var isOrdered:Boolean=false;  
    Any help you can offer would be much appreciated.
    Cheers
    Jasen

    Dustin,
    Without the ColdFusion based data management destination defined on the LCDS server, the destination will not show up in the RMI registry.  It is only the CF adapter code that does this.  The 'stock' LCDS adapter does not support invoking via RMI the way the CF version does.
    I would recommend you run the LCDS MessageBrokerServlet inside the ColdFusion web application.  This will give you two things:
    1. You will not have the overhead of RMI between CF and LCDS as they will share the same VM (better performance!).
    2. You will be able to use the CF Data Management Gateway to pass messages to Java-based destinations.  The APIs the gateway uses should work fine with either CF or Java based Data Management destinations.
    The CF/LCDS integration doesn't support what you are trying to do when you run two seperate instances.

  • Life of Transient repository varibles in ATG

    How long do transient repository variables are alive in memory? Are they linked to the session?
    I read that they are not related to Cache, so any cache invalidation events would not effect their life cycle.
    Thanks
    Edited by: Soltan on Jun 27, 2012 10:09 AM - edited to transient repository variables

    Soltan wrote:
    Thanks for the answer Nitin. Per your answer, do you mean that Transient properties are available as long as the repository is up? I may be interpreting it wrong.
    If I create a transient variable say in the profile repository item, wouldn't it be lost once the user's profile object is no longer in scope (session timeout or user logs out) ? The issue I am seeing is that my transient variables are being lost if there is some sort of error (not necessarily related to the repository). Is there a way to know how long these variables are held in memory and when they are discarded.
    The transient property would be available as a state of the RepositoryItem object. On referring to a different RepositoryItem, definitely the transient's property's value would be lost or changed (depending on if you made the transient property as a user defined property to get its value from a RepositoryPropertyDescriptor). So if you add a transient property in the profile, it be would lost or changed once the underlying RepositoryItem changes when session times out or user logs out. I have not tried this but you can go through with the documentation to see if you can possibly use a PropertiesChangedListener to detect when the property value changes.
    Soltan wrote:
    I have a few in the order repository on the commerceItem, that hold information about manual discount values. If there is an error during checkout (payment >or such), I still have the order, commerce items, promotions etc but these manual discount values (which are transient properties) are disappearing. So the next >time reprice happens I am missing these discount values.I believe somewhere you must be setting the discount related values into those transient properties in the order so can't you set them again on repricing after an error?
    As an alternative, see if you can make your transient property for manual discount as a user defined property by adding property-type attribute to your repository definition XML. Something like as:
    <property name="manualDiscount" property-type="mypackage.ManualDiscountPropertyDescriptor">
      <!-- if required you can pass additional attributes and values to your RepositoryPropertyDescriptor -->
    </property>Then implement ManualDiscountPropertyDescriptor to hold your discount information and required logic as there will be one instance of ManualDiscountPropertyDescriptor class which would be used for manualDiscount property irrespective of user session as long as repository is up.
    public class ManualDiscountPropertyDescriptor extends RepositoryPropertyDescriptor {
    public Object getPropertyValue(RepositoryItemImpl item, Object value) {
    // here item parameter is the order RepositoryItem on which you are calling the property getter
    // return value based on your logic using data from order and discount info
    }For more details, you can refer to user defined property type section in ATG Repository guide which has an example also.

  • Session in ATG

    Hi,
      For what functionality session is used in ATG, i.e what is the use of session in ATG. and how is it achieved in ATG????
    Components : session scoped
    Repository : Transient properties  
    Session cookies: ????
    Regards

    Repository transient properties are session scoped . the values stored in Transient Properties are available only till a particular session exists. Once the session has expired all the transient properties values will be gone.
    When and why are transient properties should be used.???
    Why cant we use HttpSession session=session = request.getSession(true); instead of transient properties????
    By default the transient property values are not stored in session but stored in the repository item level caches. Even if you disable the caching for an item, ATG internally caches its property values during a transaction.
    We access repository properties through RepositoryItem object instances and for any given item-descriptor in a repository there can be many RepositoryItem objects each having its own state (property values). So same property (transient or persistent) can have same or different value as the RepositoryItem object instance is going to be different. Now imagine if a transient property value was stored in session then how it would handle the different values for a given transient property for different items within a same session unless that property holds something session specific.
    Having said this you must also know that there are couple of custom property descriptor classes provided OOTB: atg.repository.SessionPropertyDescriptor and atg.repository.SessionEnumPropertyDescriptor each of which uses HttpSession to store property values. So if your transient property is declared with the property-type attribute specifying any of these custom property descriptor classes then only that property value would be stored as a session attribute. Also note that you would have to pass the session attribute name from your repository definition something like below:
    <item-descriptor name="myItem" ...>
      <property name="myProperty" data-type="string" property-type="atg.repository.SessionPropertyDescriptor" ...>
        <attribute name="sessionAttributeName" value="myProp"/>
      </property>
    </item-descriptor>
    I don't remember exactly from which version but SessionPropertyDescriptor has now been deprecated so if you plan to use it you have to do it at your own risk. The other class SessionEnumPropertyDescriptor can be used only for enumerated proeprties and is used in the securityStatus property of user profile. Refer this
    Oracle ATG Web Commerce - Security Status
    Does cookie play a role in ATG for maintaining session.   Profile and Order data is stored in cookies right???
    Whenever a request comes in without a session-id in the cookie or in the URL, the application server would create a new session for the particular web-app that is being requested. And like any typical web-app ATG also uses cookies to recognize a returning user. ATG uses cookies for different scenarios like identifying anonymous users on subsequent visits, auto-login for registered users, if a user is automatically logged in and if there were any items in his cart in the previous visit then load them back to the current cart etc. Of course there some configuration changes required to get these scenarios working in ATG.
    Remember cookies can be blocked or deleted by the user so why would you store any important data in them? Cookies store a small piece of information (usually an id) which browser can send to the server with every request and they do not hold any explicit profile or order data.
    Hope it helps and clarifies your concerns.

  • ATG 10 implementation error

    Hello Experts
    We use ATG 10.1.1 and multisite capability to render international sites such as AU, NZ, HK, EU and UK. Some of these sites respond with HTTP 500 internal server error for about 10-15 minutes every Tuesday. The sites are back up after that and work normally.
    We analyzed the server logs, thread dumps and memory utilization during this period. We found resource contentions occurring where one thread goes to TIMED_WAITING (transaction timeout is 600s) mode holding the lock on inventory repository item. The same thread is also holding the lock on the category item to set a transient property on it. All other threads are in BLOCKED state waiting to lock the category item to set a transient property on it.
    The reason behind the transient property on category item
    We have a requirement to not display gift card in any child categories but only in parent category. So there is a logic to determine if the child category contains gift card as SKU type and to hide it.
    We are able to see a droplet reporting "missing inventory for sku and store" corresponding to the international site which goes down. We observed only AU and NZ going down last week. HK is slow but responsive. EU and UK worked normally without any hitch. We saw lot of partial GC happening at this interval (671). Our normal mini GC for the same length of time is only 73. The HEAP also seems to be getting closer to the max every second during this interval.
    We also found that the catalog update and inventory update job runs at this time from our CA agent and pushes the update to commerce.
    Question
    Our code only runs a RQL to read values from inventory repository. If inventory repository is being cache invalidated and loaded with new cache, won't the RQL hit the database directly and proceed with the transaction? Our InventoryRepository cache-mode is distributed. Please see the thread trace below
    "http-0.0.0.0-8080-14" daemon prio=10 tid=0x000000004d810000 nid=0x6e87 runnable [0x00000000573ed000]
       java.lang.Thread.State: RUNNABLE
        at atg.adapter.gsa.GSAItem.lookupItemTransactionState(GSAItem.java:2456)
        - locked <0x000000079baef2d0> (a atg.adapter.gsa.GSAItem)
        at atg.adapter.gsa.GSAItem.
    getItemTransactionState(GSAItem.java:2337)
        at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:2301)
        at atg.adapter.gsa.GSAItemDescriptor.updateItem(GSAItemDescriptor.java:7305)
        at atg.adapter.gsa.ItemTransactionState.updateItemState(ItemTransactionState.java:984)
        at atg.adapter.gsa.GSATransaction.beforeCompletion(GSATransaction.java:452)
        at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:101)
        at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:269)
        - locked <0x00000007a3e79c60> (a java.lang.Object)
        at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:89)
        at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:160)
        at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1431)
        at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137)
        at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
        at atg.dtm.TransactionManagerWrapper.commit(TransactionManagerWrapper.java:438)
        at atg.adapter.gsa.GSARepository.commitTransaction(GSARepository.java:7036)
        at atg.adapter.gsa.GSAItem.setPropertyValue(GSAItem.java:1577)
        at atg.adapter.gsa.GSAPropertyDescriptor.setPropertyValue(GSAPropertyDescriptor.java:538)
        at atg.repository.RepositoryItemImpl.setPropertyValue(RepositoryItemImpl.java:249)
        at atg.adapter.gsa.GSAItem.setPropertyValue(GSAItem.java:1536)
        at com.llm.intl.repository.CategoryDisplayPropertyDescriptorIntl.checkInventoryStatus(CategoryDisplayPropertyDescriptorIntl.java:32)
    "http-0.0.0.0-8080-14" daemon prio=10 tid=0x000000004d810000 nid=0x6e87 in Object.wait() [0x00000000573ee000]
       java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)    
        at atg.repository.query.QueryCache.populateEntry(QueryCache.java:978)
        - locked <0x00000007e9252ab8> (a atg.repository.query.QueryCacheEntry)
        at atg.repository.query.QueryCache.executeCachedQuery(QueryCache.java:635)
        at atg.adapter.gsa.GSAView.executeQuery(GSAView.java:1172)
        at atg.repository.rql.RqlStatement.executeQuery(RqlStatement.java:230)
        at atg.projects.store.inventory.LLMBaseInventoryManager.getInventoryItem(LLMBaseInventoryManager.java:54)
        at atg.projects.store.inventory.LLMBaseInventoryManager.getInventoryInfo(LLMBaseInventoryManager.java:37)
        at atg.projects.store.inventory.LLMInventoryManager.queryAvailabilityStatus(LLMInventoryManager.java:38)
        at com.llm.repository.CategoryDisplayPropertyDescriptor.checkInventoryStatus(CategoryDisplayPropertyDescriptor.java:88)
        at com.llm.repository.CategoryDisplayPropertyDescriptor.isCategoryDisplayable(CategoryDisplayPropertyDescriptor.java:60)
        at com.llm.repository.CategoryDisplayPropertyDescriptor.getPropertyValue(CategoryDisplayPropertyDescriptor.java:47)
        at atg.adapter.gsa.GSAItem.getPropertyValue(GSAItem.java:1453)
        at atg.repository.RepositoryItemImpl.getPropertyValue(RepositoryItemImpl.java:151)
        at atg.repository.nucleus.RepositoryItemPropertyMapper.getPropertyValue(RepositoryItemPropertyMapper.java:151)
        at atg.beans.DynamicBeans.getPropertyValue(DynamicBeans.java:333)
        at atg.servlet.DynamoHttpServletRequest.getObjectParameter(DynamoHttpServletRequest.java:4558)
        at atg.servlet.DynamoHttpServletRequest.getObjectParameter(DynamoHttpServletRequest.java:4436)
        at atg.servlet.DynamoHttpServletRequest.getObjectParameter(DynamoHttpServletRequest.java:4828)
        at atg.servlet.DynamoHttpServletRequest.getObjectParameter(DynamoHttpServletRequest.java:4820)
        at atg.taglib.dspjsp.GetValueOfTag.calculateValue(GetValueOfTag.java:271)
        at atg.taglib.dspjsp.GetValueOfTag.doStartTag(GetValueOfTag.java:297)
        at org.apache.jsp.elements.gadgets.leftNavigationItem_jsp._jspx_meth_dsp_005fgetvalueof_005f8(leftNavigationItem_jsp.java:750)
    "http-0.0.0.0-8080-14" daemon prio=10 tid=0x000000004d810000 nid=0x6e87 waiting for monitor entry [0x00000000573ee000]
       java.lang.Thread.State: BLOCKED (on object monitor)
        at atg.adapter.gsa.GSAItem.lookupItemTransactionState(GSAItem.java:2456)
        - waiting to lock <0x000000079e700270> (a atg.adapter.gsa.GSAItem)
        at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:2337)
        at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:2301)
        at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:2287)
        at atg.adapter.gsa.GSAItem.getItemTransactionStateUnchecked(GSAItem.java:2517)
        at atg.adapter.gsa.GSAItem.setPropertyValue(GSAItem.java:1560)
        at atg.adapter.gsa.GSAPropertyDescriptor.setPropertyValue(GSAPropertyDescriptor.java:538)
        at atg.repository.RepositoryItemImpl.setPropertyValue(RepositoryItemImpl.java:249)
        at atg.adapter.gsa.GSAItem.setPropertyValue(GSAItem.java:1536)
        at com.llm.intl.repository.CategoryDisplayPropertyDescriptorIntl.checkInventoryStatus(CategoryDisplayPropertyDescriptorIntl.java:32)
    The snippet which sets the transient property "containsGiftCard" on category item
                            if(sku.getPropertyValue("LLLSkuType") != null && ((String)sku.getPropertyValue("LLLSkuType")).equals("giftCard")){
                                repositoryItemImpl.setPropertyValue("containsGiftcard", true); //repositoryItemImpl is of childCategory. HTTP thread 14 has executed &holds lock on the category
                            }else{
                                repositoryItemImpl.setPropertyValue("containsGiftcard", false);
                            int status = getInventoryManager().queryAvailabilityStatus(sku.getRepositoryId(), "10056"); // the code of this method is below
    The snippet which queries inventory
                    RepositoryView view = getRepository().getView(getItemType());
                    Object[] params = { pSkuId, pStoreId };
                    RepositoryItem[] items = getCatalogRefIdByStoreMatchQuery().executeQuery(view, params); //HTTP thread 14 goes to TIMED_WAITING mode
    #property query
    catalogRefIdByStoreMatchQuery=catalogRefId=?0 and storeId=?1
    Very much appreciate your inputs.
    Thanks,
    Sundar

    The error clearly states that it is not able to find your schema
    -------DATA IMPORT FAILED-------------------------------------------------------
    Make sure you have configured the connection details and created the schema.
    So please make sure that you have created all your schemas and are providing the correct connection details to the CIM.
    ~Gurvinder

  • ATG Privileges for Pages

    Hi,
    I am working with ATG User Authentications.
    So what i need to do is, restrict pages when UN-authorized person type URL and try to brows that page.
    I have created User Roles, Organizations and Users in BCC.
    I can access those users and roles using ATG Out Of The Box feature called /atg/userdirectory/droplet/HasFunction
    <dsp:droplet name="/atg/userdirectory/droplet/HasFunction">
         <dsp:param bean="Profile.id" name="userId"/>
         <dsp:param value="FullfilmentAdmin" name="function"/>
         <dsp:oparam name="true">
                                <dsp:valueof value="he is admin"/>
                            </dsp:oparam>                       
                            <dsp:oparam name="false">
                                <dsp:valueof value="he is not admin"/>
                            </dsp:oparam>                       
    </dsp:droplet>   
    However this approach doesn't give opportunities to make authentication based on pages. Above approach is based on user roles.
    So what i need to do is, restrict pages when UN-authorized person type URL and try to brows that page.
    Anyone does know how to make Page authentication rather than using above method ?
    saminda

    I assume you are trying to do user authentication if user is not authorized and if not you want user to be presented with a login screen for authorization. There can be different ways to do this ranging from simple to not-so-simple depending on exactly what and how you want to do it. Probably the simplest approach can be to make use of transient property of user-profile in a switch droplet and redirect to the login page using the Redirect droplet as required for an anonymous user. The example here will gives an idea of this approach:
    Oracle ATG Web Commerce - Other Commonly Used Servlet Beans
    In case you have customized the userProfile definition by adding your own security-status and customized the request pipeline to set the security-status based on your application logic then you can use it in place of Profile.transient.
    Another approach is to add your own AuthenticationServlet in the request handling pipeline based on the BasicAuthenticationPipelineServlet class similar to what has been used for dyn/admin. Refer this documentation
    Oracle ATG Web Commerce - Authentication
    There is one more way where you can add your own servlet-filter for your application which can extend atg.servlet.DispatchFilter class so that you can specify parameters like login or redirect page, pages to check etc. through <init-param> section of your filter entry in web.xml and access them in your filter class with their respective getter/setter. Apply the necessary checks and logic inside the overridden doFilterRequest() of your filetr-class and you are all set.

  • Support for "transient properties" in Toplink

    Hi,
    (JHeadstart 9.0.4.5 with Toplink)
    When I add unmapped properties to the beans that are mapped through Toplink to the tables in my database, almost like transient attributes in BC4J View Objects, I run into a problem, caused by the
    <code>getAttributeAsString(Locale locale,String attributeName</code> method in oracle.jheadstart.model.toplink.handler.DataObjectImpl. In 9.0.4.5, this method was modified to cater for these situations, because previously such properties resulted in NullPointerExceptions. However, the current implementation - while not throwing exceptions - does not return the value of the transient property, which I would prefer it to do.
    My suggestions is to change the lines:
    <code>
    if (mapping==null)
    mLog.error("No Toplink mapping found for attribute " + descriptorClass.getClass().getName()+"."+newName);
    return "";
    </code>
    to:
    <code>
    if (mapping==null)
    mLog.error("No Toplink mapping found for attribute " + descriptorClass.getClass().getName()+"."+newName);
    return value;
    </code>
    best regards,
    Lucas Jellema
    AMIS Services

    Lucas,
    Thanks for the suggestion.
    We will look into it.
    Steven davelaar,
    JHeadstart Team.

  • Transient properties of the N200

    In my department we are working on a full-duplex transceiver with with two N200 boards and SBX daughterboards (200k bandwidth). As a first step we build the program shown in the first picture: A transmitter-session is initialized and inside the while-loop we are transmitting one single set of ofdm-data (one trainingsequence-bock and ten ofdm-blocks) and afterwards wait for about 2000ms.
    On the receiver we get the following data&colon;
    The upper left picture shows the autocorrelation function and the lower left picture shows the received data signal. You can see that in addition too the ofdm-data the signal is overlaped with a sine, which also results in additional results in the autocorrelation-function (red square). This additional sine-function is only present if we use the interruped transmission scheme shown in the first picture. In case of a continuous transmission this "transient" property doesn't appear.
    Do you know the reason for this transient problem or any idea on how to fix this?

    There is some transient in the DSP as well as some transient when powering on the front end.  Given that you are not seeing the issue in packets during continuous transmission, this looks like transients through the amplifier and mixer when a signal is first sent.
    Do your packets start with valid data immediately?  If so, I would pad the beginning of the first packet with zeros... this may reduce the amplitude of the transient.  If you can synchronize your Rx and Tx, either start the Rx after the transient or throw out the first  250 us or so of transient samples.

  • Creating Custom persisted properties?

    Hi All,
    As as read atg.adapter.gsa.GSAPropertyDescriptor class will be use to create custom persisted properties. Then what is difference b/w custom persisted property, that we creating using property-type = sub class of above class and simple property that is in any table?
    Hint: custom persisted property is declared in .xml file outside of table just like transient property.
    -RMishra

    Hint: custom persisted property is declared in .xml file outside of table just like transient property.You can not have a persistent property outside <table>. If you do that your repository definition xml validation will fail during startup.
    As as read atg.adapter.gsa.GSAPropertyDescriptor class will be use to create custom persisted properties. Then what is difference b/w custom persisted property, >that we creating using property-type = sub class of above class and simple property that is in any table?Any regular persistent property in your repository is going to be handled through GSAPropertyDescriptor or its sub-class. In case you specify property-type as a sub-class of GSAPropertyDescriptor, then in that case some additional methods like rawToReal() and realToRaw() come into picture while calling getPropertyValue() and setPropertyValue() respectively.
    rawToReal() - converts from the database value to the property value as returned by RepositoryItem.getPropertyValue(). E.g. for a property that specifies a reference to another item, we can convert the ID stored in database of an item into the RepositoryItem itself to be returned from getPropertyValue().
    realToRaw() - converts from the value given to setPropertyValue into the value given to which will actually be stored in the database. E.g. a property that specifies a reference to another item, we can convert from the RepositoryItem object passed in () to its ID.
    The above default implementations are already provided in ATG Repository APIs and if you want to customize or change the default behavior then you can extend GSAPropertyDescriptor and define that class as property-type.
    As Shaik mentioned, one GSAPropertyDescriptor customization is already there in form of EnumPropertyDescriptor which comes into picture for "enumerated" data types. It is done by not specifying the class name in property-type but through an indirect approach where a type name for a repository property can be registered with this method:
    RepositoryPropertyDescriptor.registerPropertyDescriptorClass(String typeName, Class propertyDescriptorClass)
    Hope it helps.

  • TableView - How to update a running balance column after any other column in the view is re-sorted

    To keep this simple and to illustrate a problem that I am trying to solve let's say we have
    a domain class that contains an income per day.
    This class has two persistent properties - populated from a database table - date and income.
    And there is one transient property - running balance - that shows the accumulated income
    starting from the first record. This property is not persisted and it is used only to show
    the running/accumulated income in a table view.
    This domain object is shown in a table view with three columns:
         - date
         - income
         - running balance
    The first two columns - date and income - are sortable. When the user clicks on the column
    heading these can will be sorted in ascending or descending order. The running balance
    column needs to reflect this change and be correctly updated.
    So the question is : how would you implement the running balance update after the data in
    the table has been updated by the user?
    Take 1)
    =============
    The obvious approach is to use "setOnSort" method to consume the SortEvent event and re-sort the
    data but the sort-event does not contain any useful information that would tell from which column
    the sort event originated.
    Take 2)
    =============
    Found a possible solution:
         - TableView.getSortOrder() returns a list that defines the order in which TableColumn instances are sorted after the user clicked one or more column headings.
         - TableColumn.getSortType() returns the sort type - ascending/descending.
         - This info can be used in the TableView.setOnSort() event handler to re-sort the data and update the balance at the same time.
    Take 3)
    =============
    When the TableView.setOnSort() event handler is called the data is already sorted therefore the only thing that needs to be done is to update the running balance.

    I  think I understand what you're trying to do. If I've missed it, apologies, but I think this will provide you with something you can work from anyway.
    I would listen to the data instead of watching specifically for sorting. This will be much more robust if you add new functionality later (such as adding and removing rows, editing the data that's there, etc).
    Specifically, for the runningBalance column, create a cellValueFactory that provides a DoubleBinding; this binding should listen for changes to the data and compute the value by running through the table's items up to the point of the item for which it's displaying the value. (Hope you can untangle that sentence.)
    Example. The important part is the cellValueFactory for the cumulativeAmountCol. I guess I should mention that you shouldn't try this exact approach with very large tables as the performance might be pretty bad (computations of the order of n x m on changing data, where n is the number of rows in the table and m is the number of visible rows in the table).
    import java.text.DateFormat;
    import java.text.NumberFormat;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Random;
    import javafx.application.Application;
    import javafx.beans.Observable;
    import javafx.beans.binding.DoubleBinding;
    import javafx.beans.property.DoubleProperty;
    import javafx.beans.property.ObjectProperty;
    import javafx.beans.property.SimpleDoubleProperty;
    import javafx.beans.property.SimpleObjectProperty;
    import javafx.beans.value.ObservableValue;
    import javafx.collections.FXCollections;
    import javafx.scene.Scene;
    import javafx.scene.control.TableCell;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableColumn.CellDataFeatures;
    import javafx.scene.control.TableView;
    import javafx.scene.control.cell.PropertyValueFactory;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Stage;
    import javafx.util.Callback;
    public class CumulativeTableColumnExample extends Application {
      private final static int NUM_ITEMS = 20 ;
    @Override
      public void start(Stage primaryStage) {
      final TableView<LineItem> table = new TableView<>();
      // using the extractor here makes sure the table item list fires a list changed event if any amounts change
      // this enables the cumulative amount column to keep up to date when the amount in a different row changes.
      table.setItems(FXCollections.observableList(createRandomData(), new Callback<LineItem, Observable[]>() {
          @Override
          public Observable[] call(LineItem item) {
            return new Observable[] {item.amountProperty()};
      final TableColumn<LineItem, Date> dateCol = new TableColumn<>("Date");
      final TableColumn<LineItem, Number> amountCol = new TableColumn<>("Amount");
      final TableColumn<LineItem, Number> cumulativeAmountCol = new TableColumn<>("Cumulative Amount");
      table.getColumns().addAll(Arrays.asList(dateCol, amountCol, cumulativeAmountCol));
      dateCol.setCellValueFactory(new PropertyValueFactory<LineItem, Date>("date"));
        amountCol.setCellValueFactory(new PropertyValueFactory<LineItem, Number>("amount"));
        cumulativeAmountCol.setCellValueFactory(new PropertyValueFactory<LineItem, Number>("amount"));
        cumulativeAmountCol.setSortable(false); // otherwise bad things might happen
      final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
      dateCol.setCellFactory(new Callback<TableColumn<LineItem, Date>, TableCell<LineItem, Date>>() {
          @Override
          public TableCell<LineItem, Date> call(TableColumn<LineItem, Date> col) {
            return new TableCell<LineItem, Date>() {
              @Override
              public void updateItem(Date date, boolean empty) {
                super.updateItem(date, empty);
                if (empty) {
                  setText(null);
                } else {
                  setText(dateFormat.format(date));
      cumulativeAmountCol.setCellValueFactory(new Callback<CellDataFeatures<LineItem, Number>, ObservableValue<Number>> () {
          @Override
          public ObservableValue<Number> call(CellDataFeatures<LineItem, Number> cellData) {
            final LineItem currentItem = cellData.getValue() ;
            DoubleBinding value = new DoubleBinding() {
                super.bind(table.getItems());
              @Override
              protected double computeValue() {
                double total = 0 ;
                LineItem item = null ;
                for (Iterator<LineItem> iterator = table.getItems().iterator(); iterator.hasNext() && item != currentItem; ) {
                  item = iterator.next() ;
                  total = total + item.getAmount() ;
                return total ;
            return value;
        final NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
      // generics hell.. can't wait for lambdas...
      final Callback<TableColumn<LineItem, Number>, TableCell<LineItem, Number>> currencyCellFactory = new Callback<TableColumn<LineItem, Number>, TableCell<LineItem, Number>>() {
          @Override
          public TableCell<LineItem, Number> call(TableColumn<LineItem, Number> column) {
            return new TableCell<LineItem, Number>() {
              @Override
              public void updateItem(Number amount, boolean empty) {
                if (empty) {
                  setText(null) ;
                } else {
                  setText(currencyFormat.format(amount));
        amountCol.setCellFactory(currencyCellFactory);
        cumulativeAmountCol.setCellFactory(currencyCellFactory);
        BorderPane root = new BorderPane();
      root.setCenter(table);
      primaryStage.setScene(new Scene(root, 600, 400));
      primaryStage.show();
      public List<LineItem> createRandomData() {
        Random rng = new Random();
        List<LineItem> items = new ArrayList<>();
        for (int i=0; i<NUM_ITEMS; i++) {
          Calendar cal = Calendar.getInstance();
          cal.add(Calendar.DAY_OF_YEAR, rng.nextInt(365)-365);
          double amount = (rng.nextInt(90000)+10000)/100.0 ;
          items.add(new LineItem(cal.getTime(), amount));
        return items ;
      public static void main(String[] args) {
      launch(args);
    public static class LineItem {
        private final ObjectProperty<Date> date ;
        private final DoubleProperty amount ;
        public LineItem(Date date, double amount) {
          this.date = new SimpleObjectProperty<>(this, "date", date);
          this.amount = new SimpleDoubleProperty(this, "amount", amount);
        public final ObjectProperty<Date> dateProperty() {
          return date;
        public final Date getDate() {
          return date.get();
        public final void setDate(Date date) {
          this.date.set(date);
        public final DoubleProperty amountProperty() {
          return amount ;
        public final double getAmount() {
          return amount.get();
        public final void setAmount(double amount) {
          this.amount.set(amount);

  • Data Service Wizard - How can I reconfigure return type field as XML (E4X) value

    The HTTP Data Service wizard - "Reconfigure Return Type" - does not allow XML (E4X) to be selected as a data type for a field.  For example , If my example XML payload looks like this (see below), I would like to set the datatype for "settings" field to be XML (E4X) and have the service decode the "string" value into an XML (E4X) value.
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ListOfUsers version="1.0.0">
        <User>
            <id>3</id>
            <subType>INTERNAL</subType>
            <authName>internal</authName>
            <name>Internal User</name>
            <settings>&lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;Settings&gt;&lt;Profile&gt;&lt;Region&gt;emea&lt;/Region&gt;&lt;Language&gt;en.g b&lt;/Language&gt;&lt;/Profile&gt;&lt;/Settings&gt;</settings>
        </User>
    </ListOfUsers>

    I find a (reasonably) elegant workaround which is to add a transient property in the "public" sub class of the value type - see below - I havent tested it much so not sure if it will work adequateky in all circumstances
    package services.listeningpost
    public class User_type extends _Super_User_type
    public function get xmlSettings():XML
    return new XML(settings);
    public function set xmlSettings(object:XML):void
    settings = object.toXMLString();

  • Location manager design pattern?

    What is the best design pattern for using the location manager with intermittent but time-sensitive use? My app records location each time the user creates a photo, creates a note, records audio, etc and stores it using CoreData. The problem is the location manager has to spin for a bit to get the best reading, and in that time the user could easily have navigated the UI to delete the object they've created and create a new one. In that case I'd want to interrupt any location services active for the deleted object.
    Is a singleton the best pattern, keeping the active objects in an array and using @synchronize(object)...but running each in a different thread?
    Or assigning the location manager as a transient property of the object and calling stopUpdatingLocation if it gets deleted?
    Any thoughts? TIA...

    I created a singleton for this - seems to work quite well

  • Storing a secret string

    Hi,
    Our ATG based site has to make a call to a REST web services located in the cloud (somewhere on the internet). The call only executes when we send a secret api key along with it. This key is configurable. It can change over time. Normally we would store similar configuration strings in ATG nucleus property files. However, in this case, we do not want the key to be stored unencrypted on the file system of the ATG server.
    We are now looking for some sort of vault in which we can store the key. Does anyone happen to know of such a solution? We checked if the Java keystore/keytool could help us but that requires a specific format. Any other suggestions are very welcome.
    Thanks in advance,
    Bart.

    If you want to encrypt any sensitive information that is stored in a Nucleus component properties file, you can do that by providing an implementation of atg.nucleus.PropertyValueDecoder. Then within your component you can decode the value of encoded property before you actually use it.
    http://docs.oracle.com/cd/E26180_01/Platform.94/ATGProgGuide/html/s0206decodingencryptedpropertiesinnuc01.html
    PropertyValueDecoder has two variants of decode() method as: public String decode(String s) and public Object decode(Object o). There are two default OOB implementation provided also for PropertyValueDecoder which are atg.service.jdbc.SimpleLoginDecoder and atg.crypto.CipherPropertyValueDecoder. SimpleLoginDecoder uses the OOB class atg.core.util.Base64 for decoding the encrypted value in the properties file while CipherPropertyValueDecoder class can use a atg.crypto.Cipher object where you can have you own encrypt/decrypt implementations.

Maybe you are looking for