@@ -119,8 +119,6 @@ private void generateHelper() throws IOException, IllegalAccessException {
119119
120120 TypeElement type_JsonService = elements .getTypeElement (Constants .JSON_SERVICE );
121121
122- // TypeMirror iProvider = elements.getTypeElement(Constants.IPROVIDER).asType();
123-
124122 TypeMirror activityTm = elements .getTypeElement (Constants .ACTIVITY ).asType ();
125123 TypeMirror fragmentTm = elements .getTypeElement (Constants .FRAGMENT ).asType ();
126124 TypeMirror fragmentTmV4 = elements .getTypeElement (Constants .FRAGMENT_V4 ).asType ();
@@ -152,52 +150,53 @@ private void generateHelper() throws IOException, IllegalAccessException {
152150 .addModifiers (PUBLIC );
153151
154152 FieldSpec jsonServiceField = FieldSpec .builder (TypeName .get (type_JsonService .asType ()),
155- "JsonService " , Modifier .PRIVATE ).build ();
153+ "jsonService " , Modifier .PRIVATE ).build ();
156154 helper .addField (jsonServiceField );
157155
158- // JsonService service = (JsonService) router.getService(JsonService.class.getSimpleName());
159- //
160- //
156+ /*
157+ * Router router = Router.getInstance();
158+ if (router.getService(JsonService.class.getSimpleName()) != null) {
159+ JsonService jsonService = (JsonService) router.getService(JsonService.class.getSimpleName());
160+ } else {
161+ throw new IllegalStateException("JsonService not found in Router");
162+ }
163+ * */
164+
165+ // String _statement =
166+ // " $T router = $T.getInstance();\n" +
167+ // " if (router.getService($T.class.getSimpleName()) != null) {\n" +
168+ // " jsonService = ($T) router.getService($T.class.getSimpleName());\n" +
169+ // " }";
170+
161171 logger .info ("======== inject jsonservice" );
162- injectMethodBuilder . addStatement ( "JsonService = ($T) $T.getInstance().getService($T.class.getSimpleName())" ,
163- ClassName . get ( type_JsonService ) ,
172+
173+ injectMethodBuilder . addStatement ( "$T router = $T.getInstance()" ,
164174 RouterClass ,
175+ RouterClass );
176+
177+ injectMethodBuilder .beginControlFlow ("if (router.getService($T.class.getSimpleName()) != null)" ,
178+ ClassName .get (type_JsonService ));
179+
180+ injectMethodBuilder .addStatement ("jsonService = ($T) router.getService($T.class.getSimpleName())" ,
181+ ClassName .get (type_JsonService ),
165182 ClassName .get (type_JsonService ));
166183
184+
185+ injectMethodBuilder .endControlFlow ();
186+
187+ // injectMethodBuilder.addStatement(_statement,
188+ // RouterClass,
189+ // RouterClass,
190+ // ClassName.get(type_JsonService),
191+ // ClassName.get(type_JsonService),
192+ // ClassName.get(type_JsonService));
193+
167194 injectMethodBuilder .addStatement ("$T substitute = ($T)target" , ClassName .get (parent ), ClassName .get (parent ));
168195
169196 // Generate method body, start inject.
170197 for (Element element : childs ) {
171198 Autowired fieldConfig = element .getAnnotation (Autowired .class );
172199 String fieldName = element .getSimpleName ().toString ();
173- // if (types.isSubtype(element.asType(), iProvider)) { // It's provider
174- // if ("".equals(fieldConfig.name())) { // User has not set service path, then use byType.
175- //
176- // // Getter
177- // injectMethodBuilder.addStatement(
178- // "substitute." + fieldName + " = $T.getInstance().navigation($T.class)",
179- // ARouterClass,
180- // ClassName.get(element.asType())
181- // );
182- // } else { // use byName
183- // // Getter
184- // injectMethodBuilder.addStatement(
185- // "substitute." + fieldName + " = ($T)$T.getInstance().build($S).navigation();",
186- // ClassName.get(element.asType()),
187- // ARouterClass,
188- // fieldConfig.name()
189- // );
190- // }
191- //
192- // // Validater
193- // if (fieldConfig.required()) {
194- // injectMethodBuilder.beginControlFlow("if (substitute." + fieldName + " == null)");
195- // injectMethodBuilder.addStatement(
196- // "throw new RuntimeException(\"The field '" + fieldName + "' is null, in class '\" + $T.class.getName() + \"!\")", ClassName.get(parent));
197- // injectMethodBuilder.endControlFlow();
198- // }
199- // }
200- // else { // It's normal intent value
201200 String originalValue = "substitute." + fieldName ;
202201 String statment = "substitute." + fieldName + " = substitute." ;
203202 boolean isActivity = false ;
@@ -213,8 +212,8 @@ private void generateHelper() throws IOException, IllegalAccessException {
213212 }
214213
215214 statment = buildStatement (originalValue , statment , typeUtils .typeExchange (element ), isActivity );
216- if (statment .startsWith ("serializationService ." )) { // Not mortals
217- injectMethodBuilder .beginControlFlow ("if (null != serializationService )" );
215+ if (statment .startsWith ("jsonService ." )) { // Not mortals
216+ injectMethodBuilder .beginControlFlow ("if (null != jsonService )" );
218217 injectMethodBuilder .addStatement (
219218 "substitute." + fieldName + " = " + statment ,
220219 (StringUtils .isEmpty (fieldConfig .name ()) ? fieldName : fieldConfig .name ()),
@@ -224,8 +223,7 @@ private void generateHelper() throws IOException, IllegalAccessException {
224223 injectMethodBuilder .addStatement (
225224 "$T.e(\" " + TAG + "\" , \" You want automatic inject the field '"
226225 + fieldName + "' in class '$T' ," +
227- " then you should implement 'SerializationService' to support " +
228- "object auto inject!\" )" , AndroidLog , ClassName .get (parent ));
226+ " but JsonService not found in Router\" )" , AndroidLog , ClassName .get (parent ));
229227
230228 injectMethodBuilder .endControlFlow ();
231229 } else {
@@ -240,7 +238,6 @@ private void generateHelper() throws IOException, IllegalAccessException {
240238 injectMethodBuilder .endControlFlow ();
241239 }
242240 }
243- // }
244241
245242 helper .addMethod (injectMethodBuilder .build ());
246243
@@ -286,7 +283,7 @@ private String buildStatement(String originalValue, String statement, int type,
286283 } else if (type == Type .PARCELABLE .ordinal ()) {
287284 statement += (isActivity ? ("getParcelableExtra($S)" ) : ("getParcelable($S)" ));
288285 } else if (type == Type .OBJECT .ordinal ()) {
289- statement = "serializationService.json2Object (substitute." +
286+ statement = "jsonService.parseObject (substitute." +
290287 (isActivity ? "getIntent()." : "getArguments()." ) +
291288 (isActivity ? "getStringExtra($S)" : "getString($S)" ) + ", $T.class)" ;
292289 }
0 commit comments