এই বিভাগটি ইঞ্জিনিয়ারদের SDK-এর সাথে ক্রস-প্রোফাইল কলগুলি কীভাবে কাজ করে এবং কীভাবে সেগুলি পরীক্ষা করা যেতে পারে তার একটি 5-মিনিট ওভারভিউ দেওয়ার জন্য ডিজাইন করা হয়েছে৷ এখনও কিছু তৈরি করার চেষ্টা করবেন না - এটি একটি রেফারেন্স বা একটি গাইড হিসাবে ব্যবহার করার জন্য ডিজাইন করা হয়নি, তবে শুধুমাত্র একটি ভূমিকা হিসাবে।
কাস্টম প্রোফাইল-সচেতন ক্লাস এবং পদ্ধতি
সংযুক্ত অ্যাপ SDK আপনাকে ক্রস-প্রোফাইল হিসাবে আপনার নিজস্ব ক্লাস এবং পদ্ধতিগুলিকে টীকা করতে দেয়৷ এটি ক্লাস এবং পদ্ধতিগুলি তৈরি করে যা আপনাকে যেকোনো প্রোফাইলে টীকাকৃত পদ্ধতি চালানোর অনুমতি দেয়।
উদাহরণস্বরূপ, SDK টীকা যোগ করা সহ নিম্নলিখিত শ্রেণীটি বিবেচনা করুন:
public class CalendarDatabase {
@CrossProfile // SDK annotation
public void deleteEvent(Event event, Account account) {
// complex logic with database calls
}
}
এটি প্রোফাইলের সাথে প্রিফিক্সড একটি ক্লাস তৈরি করে, যা আপনাকে আপনার পছন্দের প্রোফাইলে এই API কল করার অনুমতি দেয়। যেমন: java profileCalendarDatabase.work().deleteEvent(event, account);
আরও জটিল উদাহরণ
আরও বাস্তবসম্মতভাবে, আপনার ক্লাস এবং পদ্ধতিগুলি আরও জটিল হবে। উদাহরণস্বরূপ, আপনার বিদ্যমান API ListenableFuture
রিটার্ন প্রকারগুলি ব্যবহার করতে পারে এবং আপনাকে উভয় প্রোফাইল থেকে ফলাফল একত্রিত করতে হতে পারে। এই উদাহরণ বিবেচনা করুন:
public class CalendarDatabase {
@CrossProfile // SDK annotation
public ListenableFuture<Collection<Event>> getEvents() {
// complex logic with database calls
}
}
// Merge results from both profiles into a set
profileCalendarDatabase.both()
.getEvents()
.transform((Map<Profile, Collection<Event>> events) -> {
return events.values()
.stream()
.flatMap(Collection::stream)
.collect(Collectors.toSet());
}, directExecutor());
এই উৎপন্ন ক্লাস এবং পদ্ধতিগুলি সম্পূর্ণ ধরনের নিরাপত্তা এবং IDE কোড সমাপ্তির সাথে প্রত্যাশিতভাবে কাজ করে।
আপনার টীকা করা API-এর প্রতিটি রিটার্ন এবং প্যারামিটার টাইপ অবশ্যই SDK দ্বারা সমর্থিত হতে হবে, তবে এটি ListenableFuture
, Optional
, এবং প্রোটো ছাড়াও তালিকা, সেট, অ্যারে, আদিম, যেকোনো পার্সেলেবল টাইপ এবং যেকোনো সিরিয়ালাইজেবল টাইপের নেস্টিং এবং জেনেরিককে সম্পূর্ণরূপে সমর্থন করে . SDK দ্বারা স্থানীয়ভাবে সমর্থিত নয় এমন ধরনের জন্য সমর্থন যোগ করাও আপনার পক্ষে সম্ভব। একটি চরম উদাহরণ হিসাবে, এটি নির্বিঘ্নে ListenableFuture<List<Map<CustomProto, CustomParcelableType[]>>>
সমর্থন করবে।
টেস্টিং
SDK ইউনিট পরীক্ষা সহজ করার জন্য ডিজাইন করা হয়েছে। প্রতিটি জেনারেট করা প্রোফাইল ক্লাসের জন্য, একটি অনুরূপ FakeProfile
ক্লাস রয়েছে যা আপনি কাজ এবং ব্যক্তিগত উদাহরণ প্রদান করতে পারেন। যেমন:
// Create an instance of the SDK-generated fake connector class. This
// class lets you control the availability of the profiles, which
// profile you are now running on.
private final FakeCrossProfileConnector connector =
new FakeCrossProfileConnector();
// Create an instance of your real/fake/mock class for both profiles.
private final CalendarDatabase personalCalendarDatabase =
new FakeCalendarDatabase();
private final CalendarDatabase workCalendarDatabase =
new FakeCalendarDatabase();
// Create an instance of the SDK-generated fake profile-aware class.
private final FakeProfileCalendarDatabase profileCalendarDatabase =
FakeProfileCalendarDatabase.builder()
.personal(personalCalendarDatabase)
.work(workCalendarDatabase)
.connector(connector)
.build();
// Pass profileCalendarDatabase into your classes under test, or set
// Dagger up to inject the fake automatically.