You are on page 1of 6

Yodlee SDK Modification Request

Request Date 28/Oct/2016


Requestor Aditya Pratap Bhuyan
Design document location
BUG # (if applicable) 7446 806357
Request Priority Standard Review within __ days
Emergency Needs to be done right away!

I have read the SDK Modification guidelines at


http://intranet.yodlee.com/twiki/bin/view/ProductDevelopment/SDKGuidelinesForSOAP

I have read the SDK back porting guidelines at


http://intranet.yodlee.com/twiki/bin/view/ProductDevelopment/SDKBackPortingGuidelines

New API
1. Is the API exposed in SOAP? If yes 2nd step is required. No.
2. Add a new NON_PARAM_ACL for this new API using the template at the following
location
//projects/Platform/main/Engineering/DevDeck/Standards/NonParamAcl_Addition_Guid
elines.doc
3. NOTE: If this is an overloaded API we need not add a new NON_PARAM_ACL.
Imp Note: If an API is exposed in SOAP and is not having a corresponding record in the
NON_PARAM_ACL table it will not be accessible in SOAP server i.e API of this interface
can be called but will always return InsufficientPrivilegeException

FQCN of declaring interface com.yodlee.ext.traversal.SiteTraversal


API Signature All APIs

Purpose of new API


Yodlee SDK Modification Request
If any of the check boxes below are marked NO, provide explanation.

YES NO Explanation
Is this a new API? Yes, this is a new API.
Have you declared all the Yes, exceptions have been declared
exceptions that can be thrown
by the API?
Have you made an entry in yodlee-
ejb-jar-xml?

Does the method have self /**


explanatory javadoc, including * This method would be used to
return the Supported
sample code? Paste or attach * document level details for the
the javadoc. give Container at Site level
* @param cobContext
* @param siteId
* @param containerName
* @return DocTypeConfigInfo[]
*/
public static DocTypeConfigInfo[]
getSuportedDocumentInfo(TCobrandContext
cobContext,Long siteId,String
containerName){
if(cobContext == null){
throw new
IllegalArgumentValueException(IllegalArgu
mentValueException.NULL_ARGUMENT,"SiteTra
versalHelper.getSuportedDocumentInfo Null
Cobrand credentials entered");
}
if(siteId == null || siteId
< 1){
throw new
IllegalArgumentValueException(IllegalArgu
mentValueException.NULL_ARGUMENT,"SiteTra
versalHelper.getSuportedDocumentInfo Site
Id entered is null");
}
if( siteId < 1){
throw new
IllegalArgumentValueException(IllegalArgu
mentValueException.INVALID_VALUE,"SiteTra
versalHelper.getSuportedDocumentInfo
Invalid Site Id::"+siteId);
}
if(containerName == null){
throw new
IllegalArgumentValueException(IllegalArgu
mentValueException.NULL_ARGUMENT,"SiteTra
versalHelper.getSuportedDocumentInfo()
ContainerName passed is null");
Yodlee SDK Modification Request
}
Long docSupported = 1l;
ImmutableCache immutableCache =
cobContext.getCacheContext().getImmutable
Cache();
Map<String,DocType>
docTypeMap = (Map<String,DocType>)
immutableCache.getTable(immutableCache.DO
C_TYPE);
DocTypeConfigInfo document =
null;

List<DocTypeConfigInfo>
docTypeInfos = new
ArrayList<DocTypeConfigInfo>();
Tag tag = null;
Long docId = null;

Collection<DocTypeSuminfoConfig> configs
= null;
try{
InMemoryContentCacheImpl
cache =
InMemoryContentCacheImpl.getInstance();
HashMap
sumInfoHashMapBySiteId =
cache.getTable(ContentCache.SUM_INFO_SITE
ID_COL);
ArrayList<SumInfo> values =
(ArrayList<SumInfo>)
sumInfoHashMapBySiteId.get(siteId);
for(SumInfo
sumInfo:values){
tag =
TagAccessor.getTag(sumInfo.getTagId(),cob
Context.getConnection());

if(docSupported.equals(sumInfo.getIsDocDo
wnloadSupprtd()) &&
sumInfo.getSiteId().equals(Long.valueOf(s
iteId)) &&
containerName.equalsIgnoreCase(tag.getTag
())){

Map<Long,DocTypeSuminfoConfig>
docTypeSuminfoConfig =
DocTypeSumInfoConfigAccessor.getCachedDoc
TypeSuminfoConfig(cobContext,
sumInfo.getSumInfoId());

if(docTypeSuminfoConfig != null &&


docTypeSuminfoConfig.size() > 0){
configs
= docTypeSuminfoConfig.values();
Yodlee SDK Modification Request
for(DocTypeSuminfoConfig
dtsic:configs){

docId = dtsic.getDocTypeId();

document = new DocTypeConfigInfo();

document.setDownloadDurationInDays(dtsic.
getDwnldDurationInDays());

DocType docType = new DocType();

docType.setId(docId);

docType.setValue(DocCobConfigAccessor.get
DocumentType(cobContext, docId));

document.setDocType(docType);

document.setIsDocDownloadEnabled(dtsic.ge
tIsDocDwnldEn());

docTypeInfos.add(document);
}
}

}
}catch(Exception e){
e.printStackTrace();
}

return docTypeInfos.toArray(new
DocTypeConfigInfo[docTypeInfos.size()]);
}
Have you used
YodleeWebMethod annotation
to specify a unique
webMethodName if the method
is overloaded?

If any of the check boxes below is marked YES, provide explanation.

NO YES Explanation
Yodlee SDK Modification Request
Are there existing APIs playing a similar role? If
yes, explain the need of the new API.
If answer to above is yes, do you suggest
deprecating the old API if this is more
comprehensive? Please summarize high level
thoughts on the implementation being able to
handle the old API (if deprecated) as well as the
new one too.

Does the API use Map/List/Set as a parameter or


return value? If yes, you are not confirming to
SOAP guidelines. Explain why arrays cannot be
used.
Does the API use java.lang.Object as a parameter or
return value? If yes, you are not confirming to SOAP
guidelines. Explain why specific type(s) cannot be
used.
Have you chosen the transaction descriptor as
RequiresNew in Yodlee-ejb-jar.xml. If yes, explain
why?
Is this a static utility method? We cannot have
static utility methods in the SDK.
Does the package name contain any upper case
letters? Package names cannot have upper case
letters.

If any of the check boxes below are marked NO, provide explanation.

YES NO Explanation
Does the new class has explanatory javadoc? * This class is a POJO to
encapsulate
* DocTypeSumInfoConfig .
It contains
* docType and
isDocDownloadEnabled and
* downloadDurationInDays
Does the new class has a No-arg constructor?
Does the new class has getter/setter methods for
all fields? (getXXX and setXXX for field XXX)
Is the new class serializable?
All SDK VOs need to be serializable.

If any of the check boxes below is marked YES, provide explanation.


Yodlee SDK Modification Request
NO YES Explanation
Do getter/setter methods of field throw
exceptions? If yes, you are not confirming to
SOAP guidelines. This request cannot be
approved.
Is there an existing Yodlee type with the same
name (simple name not FQCN) in Yodlee SDK?
If yes, explain why we cant re-use existing
class.
Is there a class or interface present with the same
FQCN as the new class in any other folder than
SDK? If yes, explain why you need a duplicate
class.
Is this an inner class or contains an inner class?
SDK classes cannot have inner classes.
Is any field of collection type (List/Set/Map)? If
yes, explain why arrays cannot be used. Refer
Yodlee SOAP guidelines.
Is any field of type java.lang.Object? If yes,
explain why a more specific type cannot be used.
Yodlee SOAP guidelines dont allow usage of
generic types.
Does the package name contain any upper case
letters? Package names cannot have upper case
letters.

You might also like