- First phase is to refresh knolwedge of C and then learn syntax of Objective C because Objective C is superset of C. I found this book very helpful for this phase Learning Objective-C 2.0: A Hands-On Guide to Objective-C for Mac and IOS Developers
Wednesday, February 23, 2011
How to Learn IOS Programming having experience In Java language
I am creating this post to help those which are working in java programming language and want to explore or work in IOS. I am working in Java for last eight years and now exploring IOS programming so will share my experiences through this post.
Labels:
developers,
IOS,
java,
Objective C,
programming,
starters
Monday, February 7, 2011
Setting datasource name programmatically for ADF Application
While working on an enterprise application for my client, i received a request from the client that data source name should not be hardcoded in the application and it should be configurable because client wants to deploy it more than one instance of application on the same server for different purposes like preview, production etc. So i googled it, and found excellent article 11g Dynamic JDBC Credentials for Model 1, Struts, Trinidad, and ADF Faces Rich Client
Here it is simplified version:
You will have to extend two following classes:
EnvInfoProvider
This is main interface and datasource name will be set in the implementation of this interace. You will have to implement following three methods:
Here it is simplified version:
You will have to extend two following classes:
- EnvInfoProvider
- DefaultSessionCookieFactory
EnvInfoProvider
This is main interface and datasource name will be set in the implementation of this interace. You will have to implement following three methods:
- public Object getInfo(String propName, Object object)
- public void modifyInitialContext(Object initialContext)
- public int getNumOfRetries()
public Object getInfo(String propName, Object object) {String myDataSourceName = "test"; // You can set it through your logicif (object instanceof Hashtable) {Hashtable connectionEnv = (Hashtable)object;System.out.println(connectionEnv.get(Configuration.JDBC_CONNECTION_NAME));String contextPath = (String)ADFContext.getCurrent().getSessionScope().get("contextPath");connectionEnv.put(Configuration.JDBC_DS_NAME,"java:comp/env/jdbc/"+myDataSourceName );}return null;}public void modifyInitialContext(Object initialContext) {}public int getNumOfRetries() {return 0;}
DefaultSessionCookieFactory
In order to configure custom implementation of EnvInfoProvider, you will have to extend DefaultSessionCookieFactory and override createSessionCookie method. Sample implementation is given below:
public SessionCookie createSessionCookie(String name,
String value,
ApplicationPool pool,
Properties properties) {
SessionCookie cookie = super.createSessionCookie(name, value, pool, properties);
Hashtable env = pool.getEnvironment();
env.remove(Configuration.JDBC_CONNECTION_NAME);
EnvInfoProvider provider = new MyEnvInfoProvider();
cookie.setEnvInfoProvider(provider);
return cookie;
}
Now last step is to configure this custom SessionCookieFactory. Open bc4j.xcfg of application module and add following element as a child of respected AppModuleConfig element
Thursday, July 29, 2010
Accessing Runtime metadata for ViewObject and EntityObject

Figure shown above illustrates the three primary interfaces ADF provides for accessing runtime metadata about view objects and entity objects. The
ViewObject interface extends the StructureDef interface. The class representing the entity definition (EntityDefImpl) also implements this interface. As its name implies, the StructureDef defines the structure and the component and provides access to a collection of AttributeDef objects that offer runtime metadata about each attribute in the view object row or entity row. Using an AttributeDef, you can access its companion AttributeHints object to reference hints like the display label, format mask, tooltip, etc.Now you can use this understanding to get runtime meta info about view object or entity object e.g. if i want to find whether a ViewObject is readonly non entity based object or not. i can find it by:
isFullSql()istrueThis method returns true if the view object's SQL query is completely specified by the developer, as opposed to having the select list derived automatically based on the participating entity usages.
getEntityDefs()isnullThis method returns an array of
EntityDefImplobjects representing the view object's entity usages. If it returnsnull, then the view object has no entity usages.
Labels:
ADF,
EntityObject,
MetaInfo,
readonly,
structure,
ViewObject
Wednesday, May 19, 2010
Integrated Weblogic Server Domain
I was developing an application on JDeveloper 11g and deploying it on intergrated weblogic server. In my application i was authenticating using my own authentication provider but when i configured it on weblogic, weblogic failed to start. I was not finding any configuration file where i can revert security settings of weblogic but after some try i found it and thought to share it with others. When you install JDeveloper on windows, it places configuration files under "C:\Documents and Settings\user_name\Application Data\JDeveloper". Here you can find all settings for jdeveloper and integrated weblogic. Under this directory there is a folder with something "system11.....". Now to change weblogic related settings, open "defaultDomain/config.xml" and change it accordingly.
Tuesday, December 29, 2009
Programmatically Navigating to another page in adf / jsf
Here is the sample code which can be used to programmatically navigating to another page in jsf or adf
FacesContext fctx = FacesContext.getCurrentInstance();
Application application = fctx.getApplication();
NavigationHandler navHandler = application.getNavigationHandler();
navHandler.handleNavigation(fctx,null, "name of navigation case");
FacesContext fctx = FacesContext.getCurrentInstance();
Application application = fctx.getApplication();
NavigationHandler navHandler = application.getNavigationHandler();
navHandler.handleNavigation(fctx,null, "name of navigation case");
Doing some work before showing Popup in ADF
Here is the way to do any processing before calling popup. First of all create a method in backing bean and assign this to action of "commandButton" or "commandLink". Sample signature for you method is as follows:
public void myMethod()
{
/**
* Place your processing logic here and then call showPoup method
**/
showPopup(popupId);
}
Signature of showPopup is:
public static void showPopup(String popupId)
{
FacesContext context = FacesContext.getCurrentInstance();
ExtendedRenderKitService extRenderKitSrvc =
Service.getRenderKitService(context, ExtendedRenderKitService.class);
extRenderKitSrvc.addScript(context,
"AdfPage.PAGE.findComponent('" + popupId + "').show();");
}
public void myMethod()
{
/**
* Place your processing logic here and then call showPoup method
**/
showPopup(popupId);
}
Signature of showPopup is:
public static void showPopup(String popupId)
{
FacesContext context = FacesContext.getCurrentInstance();
ExtendedRenderKitService extRenderKitSrvc =
Service.getRenderKitService(context, ExtendedRenderKitService.class);
extRenderKitSrvc.addScript(context,
"AdfPage.PAGE.findComponent('" + popupId + "').show();");
}
Friday, December 25, 2009
JSF Life cycle Tip # 1
Usually people think that by setting the attribute "immediate" true, bypasses the validation life cycle but this is not true in every case. If you talk about CommandButton and CommandLink, then its true and after "Apply Request Values" phase, request processing cycle shifts to "Render Response" phase thus skipping "Process Validation","Update Model Values", and "Invoke Application". ActionListener and action method associcated with CommandButton / CommandLink is executed in "Apply Request Values".
When we talk about editableValueHolder like InputText, and other controls, setting immediate "true" does not bypass the validation or other phases. Infact it just prioritize the control for validation e.g. if you want to validate one input control first than others, then you can set "immediate" for that control to "true".
When we talk about editableValueHolder like InputText, and other controls, setting immediate "true" does not bypass the validation or other phases. Infact it just prioritize the control for validation e.g. if you want to validate one input control first than others, then you can set "immediate" for that control to "true".
Labels:
commandbutton,
immediate,
inputtext,
jsf,
lifecycle
Subscribe to:
Posts (Atom)