react-native-navigation的迁移库

ExternalComponent.java 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.reactnativenavigation.parse;
  2. import com.reactnativenavigation.parse.params.NullText;
  3. import com.reactnativenavigation.parse.params.Text;
  4. import com.reactnativenavigation.parse.parsers.TextParser;
  5. import org.json.JSONException;
  6. import org.json.JSONObject;
  7. public class ExternalComponent {
  8. public Text name = new NullText();
  9. public JSONObject passProps = new JSONObject();
  10. public static ExternalComponent parse(JSONObject json) {
  11. ExternalComponent options = new ExternalComponent();
  12. if (json == null) {
  13. return options;
  14. }
  15. options.name = TextParser.parse(json, "name");
  16. if (!options.name.hasValue()) {
  17. throw new RuntimeException("ExternalComponent must have a name");
  18. }
  19. options.passProps = parsePassProps(json);
  20. return options;
  21. }
  22. private static JSONObject parsePassProps(JSONObject json) {
  23. if (json.has("passProps")) {
  24. try {
  25. return json.getJSONObject("passProps");
  26. } catch (JSONException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. return new JSONObject();
  31. }
  32. public void mergeWith(ExternalComponent other) {
  33. if (other.name.hasValue()) {
  34. name = other.name;
  35. }
  36. if (other.passProps.length() > 0) {
  37. passProps = other.passProps;
  38. }
  39. }
  40. public void mergeWithDefault(ExternalComponent defaultOptions) {
  41. if (!name.hasValue()) {
  42. name = defaultOptions.name;
  43. }
  44. if (passProps.length() == 0) {
  45. passProps = defaultOptions.passProps;
  46. }
  47. }
  48. }