// Path: framework/src/main/java/com/kifile/android/cornerstone/impl/Cornerstone.java
// public class Cornerstone extends AbstractDataProviderManager {
// 
//     private static Cornerstone sInstance;
// 
//     private Cornerstone() {
//         // Make Cornerstone singleton.
//     }
// 
//     /**
//      * Use singleton here.
//      *
//      * @return
//      */
//     public static Cornerstone getInstance() {
//         if (sInstance == null) {
//             synchronized (Cornerstone.class) {
//                 if (sInstance == null) {
//                     sInstance = new Cornerstone();
//                 }
//             }
//         }
//         return sInstance;
//     }
// 
//     public static void registerProvider(String key, Class<? extends DataProvider> providerClazz) {
//         getInstance().register(key, providerClazz);
//     }
// 
//     public static DataProvider obtainProvider(String key) {
//         return getInstance().obtain(key);
//     }
// 
//     public static void releaseProvider(String key) {
//         getInstance().release(key);
//     }
// }
// 
// Path: app/src/main/java/com/kifile/android/sample/cornerstone/data/ContactsProvider.java
// public class ContactsProvider extends ContentDataProvider<List<ContactsProvider.Contact>> {
// 
//     public static final String KEY = ContactsProvider.class.getSimpleName();
// 
//     public ContactsProvider() {
//         super(SampleApplication.instance, ContactsContract.Contacts.CONTENT_URI);
//         setFetcher(new AnnotationCursorConverter<>(buildCursorFetcher(), Contact.class));
//     }
// 
//     //    public class ContactConverter extends AbstractFetcherConverter<Cursor, List<Contact>> {
// //
// //        /**
// //         * Wrap the DataFetcher will be transformed.
// //         *
// //         * @param proxy
// //         */
// //        public ContactConverter(DataFetcher<Cursor> proxy) {
// //            super(proxy);
// //        }
// //
// //        @Override
// //        protected List<Contact> convert(Cursor cursor) {
// //            if (cursor != null) {
// //                int nameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
// //                List<Contact> contacts = new ArrayList<>();
// //                for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
// //                    String name = cursor.getString(nameColumn);
// //                    Contact contact = new Contact();
// //                    contact.name = name;
// //                    contacts.add(contact);
// //                }
// //                cursor.close();
// //                return contacts;
// //            }
// //            return null;
// //        }
// //    }
// 
//     public static class Contact {
// 
//         @Property(name = ContactsContract.Contacts.DISPLAY_NAME)
//         public String name;
// 
//     }
// 
// }
// 
// Path: app/src/main/java/com/kifile/android/sample/cornerstone/data/HttpSampleProvider.java
// public class HttpSampleProvider extends AbstractDataProvider<String> {
// 
//     public static final String KEY = HttpSampleProvider.class.getName();
// 
//     public HttpSampleProvider() {
//         HttpFetcher fetcher = new HttpFetcher(HttpFetcher.METHOD_GET, "https://baidu.com");
//         setAsync(true);
//         setFetcher(new InputStream2StringConverter(fetcher));
//     }
// }
// 
// Path: app/src/main/java/com/kifile/android/sample/cornerstone/data/SampleDataProvider.java
// public class SampleDataProvider extends AbstractDataProvider<List<Class>> {
// 
//     public static final String KEY = SampleDataProvider.class.getSimpleName();
// 
//     public SampleDataProvider() {
//         SampleActivityFetcher fetcher = new SampleActivityFetcher();
//         fetcher.addActivity(SampleActivity.class);
//         fetcher.addActivity(ContactFetcherActivity.class);
//         fetcher.addActivity(HttpActivity.class);
//         setFetcher(fetcher);
//     }
// 
//     public class SampleActivityFetcher implements DataFetcher<List<Class>> {
// 
//         private List<Class> mActivities;
// 
//         public SampleActivityFetcher() {
//             mActivities = new ArrayList<>();
//         }
// 
//         public void addActivity(Class clazz) {
//             mActivities.add(clazz);
//         }
// 
//         @Override
//         public List<Class> fetch() {
//             return mActivities;
//         }
//     }
// 
// }


import android.app.Application;
import com.kifile.android.cornerstone.impl.Cornerstone;
import com.kifile.android.sample.cornerstone.data.ContactsProvider;
import com.kifile.android.sample.cornerstone.data.HttpSampleProvider;
import com.kifile.android.sample.cornerstone.data.SampleDataProvider;
package com.kifile.android.sample.cornerstone;



/**
 * Register the providers int application class.
 * <p/>
 * Created by kifile on 15/8/25.
 */
public class SampleApplication extends Application {

    public static Application instance;

    static {
        Cornerstone.registerProvider(SampleDataProvider.KEY, SampleDataProvider.class);
// Path: framework/src/main/java/com/kifile/android/cornerstone/impl/Cornerstone.java
// public class Cornerstone extends AbstractDataProviderManager {
// 
//     private static Cornerstone sInstance;
// 
//     private Cornerstone() {
//         // Make Cornerstone singleton.
//     }
// 
//     /**
//      * Use singleton here.
//      *
//      * @return
//      */
//     public static Cornerstone getInstance() {
//         if (sInstance == null) {
//             synchronized (Cornerstone.class) {
//                 if (sInstance == null) {
//                     sInstance = new Cornerstone();
//                 }
//             }
//         }
//         return sInstance;
//     }
// 
//     public static void registerProvider(String key, Class<? extends DataProvider> providerClazz) {
//         getInstance().register(key, providerClazz);
//     }
// 
//     public static DataProvider obtainProvider(String key) {
//         return getInstance().obtain(key);
//     }
// 
//     public static void releaseProvider(String key) {
//         getInstance().release(key);
//     }
// }
// 
// Path: app/src/main/java/com/kifile/android/sample/cornerstone/data/ContactsProvider.java
// public class ContactsProvider extends ContentDataProvider<List<ContactsProvider.Contact>> {
// 
//     public static final String KEY = ContactsProvider.class.getSimpleName();
// 
//     public ContactsProvider() {
//         super(SampleApplication.instance, ContactsContract.Contacts.CONTENT_URI);
//         setFetcher(new AnnotationCursorConverter<>(buildCursorFetcher(), Contact.class));
//     }
// 
//     //    public class ContactConverter extends AbstractFetcherConverter<Cursor, List<Contact>> {
// //
// //        /**
// //         * Wrap the DataFetcher will be transformed.
// //         *
// //         * @param proxy
// //         */
// //        public ContactConverter(DataFetcher<Cursor> proxy) {
// //            super(proxy);
// //        }
// //
// //        @Override
// //        protected List<Contact> convert(Cursor cursor) {
// //            if (cursor != null) {
// //                int nameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
// //                List<Contact> contacts = new ArrayList<>();
// //                for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
// //                    String name = cursor.getString(nameColumn);
// //                    Contact contact = new Contact();
// //                    contact.name = name;
// //                    contacts.add(contact);
// //                }
// //                cursor.close();
// //                return contacts;
// //            }
// //            return null;
// //        }
// //    }
// 
//     public static class Contact {
// 
//         @Property(name = ContactsContract.Contacts.DISPLAY_NAME)
//         public String name;
// 
//     }
// 
// }
// 
// Path: app/src/main/java/com/kifile/android/sample/cornerstone/data/HttpSampleProvider.java
// public class HttpSampleProvider extends AbstractDataProvider<String> {
// 
//     public static final String KEY = HttpSampleProvider.class.getName();
// 
//     public HttpSampleProvider() {
//         HttpFetcher fetcher = new HttpFetcher(HttpFetcher.METHOD_GET, "https://baidu.com");
//         setAsync(true);
//         setFetcher(new InputStream2StringConverter(fetcher));
//     }
// }
// 
// Path: app/src/main/java/com/kifile/android/sample/cornerstone/data/SampleDataProvider.java
// public class SampleDataProvider extends AbstractDataProvider<List<Class>> {
// 
//     public static final String KEY = SampleDataProvider.class.getSimpleName();
// 
//     public SampleDataProvider() {
//         SampleActivityFetcher fetcher = new SampleActivityFetcher();
//         fetcher.addActivity(SampleActivity.class);
//         fetcher.addActivity(ContactFetcherActivity.class);
//         fetcher.addActivity(HttpActivity.class);
//         setFetcher(fetcher);
//     }
// 
//     public class SampleActivityFetcher implements DataFetcher<List<Class>> {
// 
//         private List<Class> mActivities;
// 
//         public SampleActivityFetcher() {
//             mActivities = new ArrayList<>();
//         }
// 
//         public void addActivity(Class clazz) {
//             mActivities.add(clazz);
//         }
// 
//         @Override
//         public List<Class> fetch() {
//             return mActivities;
//         }
//     }
// 
// }


// Path: app/src/main/java/com/kifile/android/sample/cornerstone/SampleApplication.java
import android.app.Application;
import com.kifile.android.cornerstone.impl.Cornerstone;
import com.kifile.android.sample.cornerstone.data.ContactsProvider;
import com.kifile.android.sample.cornerstone.data.HttpSampleProvider;
import com.kifile.android.sample.cornerstone.data.SampleDataProvider;

package com.kifile.android.sample.cornerstone;



/**
 * Register the providers int application class.
 * <p/>
 * Created by kifile on 15/8/25.
 */
public class SampleApplication extends Application {

    public static Application instance;

    static {
        Cornerstone.registerProvider(SampleDataProvider.KEY, SampleDataProvider.class);
        Cornerstone.registerProvider(ContactsProvider.KEY, ContactsProvider.class);