├── .gitignore ├── .travis.yml ├── CHANGELOG.adoc ├── LICENSE ├── NOTICE ├── README.asciidoc ├── examples ├── app │ ├── pom.xml │ ├── proguard.cfg │ ├── project.properties │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── org │ │ │ ├── demo │ │ │ └── ExampleParcel.java │ │ │ └── parceler │ │ │ └── app │ │ │ ├── FirstActivity.java │ │ │ └── SecondActivity.java │ │ └── res │ │ ├── drawable-hdpi │ │ └── icon.png │ │ ├── layout │ │ ├── activity_first.xml │ │ └── activity_second.xml │ │ └── values │ │ └── strings.xml ├── gradle │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradleParceler │ │ ├── build.gradle │ │ ├── libs │ │ │ └── android-support-v4.jar │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── ic_launcher-web.png │ │ │ ├── java │ │ │ └── org │ │ │ │ ├── app │ │ │ │ ├── FirstActivity.java │ │ │ │ └── SecondActivity.java │ │ │ │ └── demo │ │ │ │ └── ExampleParcel.java │ │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ │ ├── layout │ │ │ ├── activity_first.xml │ │ │ └── activity_second.xml │ │ │ └── values │ │ │ └── strings.xml │ ├── gradlew │ ├── gradlew.bat │ ├── pom.xml │ └── settings.gradle ├── performance │ ├── pom.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── org │ │ │ └── parceler │ │ │ └── performance │ │ │ ├── Developer.java │ │ │ ├── ImmutableAutoParcelDeveloper.java │ │ │ ├── ImmutableDeveloper.java │ │ │ ├── MainActivity.java │ │ │ ├── ParcelExperiment.java │ │ │ ├── ParcelMutator.java │ │ │ └── ParcelableDeveloper.java │ │ └── res │ │ ├── drawable-hdpi │ │ └── icon.png │ │ ├── layout │ │ └── main.xml │ │ └── values │ │ └── strings.xml ├── pom.xml └── test │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── org │ │ └── parceler │ │ ├── Enums.java │ │ ├── Example.java │ │ ├── ExampleParcel.java │ │ ├── ExternalParcel.java │ │ ├── Manual.java │ │ ├── ManualConverter.java │ │ ├── ManuallyRegistered.java │ │ ├── ManuallyRegisteredConverter.java │ │ ├── RealParcelable.java │ │ ├── SubParcel.java │ │ ├── Tester.java │ │ └── test │ │ ├── DateConverter.java │ │ └── ParcelerTestModel.java │ └── test │ └── java │ ├── android │ ├── arch │ │ └── lifecycle │ │ │ └── MutableLiveData.java │ └── databinding │ │ ├── ObservableArrayList.java │ │ ├── ObservableArrayMap.java │ │ └── ObservableField.java │ └── org │ └── parceler │ ├── ABTest.java │ ├── CallbackTest.java │ ├── CircularReferenceTest.java │ ├── ConverterTarget.java │ ├── ConverterTest.java │ ├── EnumsTest.java │ ├── ExceptionStrategy.java │ ├── FieldModifiers.java │ ├── FieldSubClass.java │ ├── GraphTest.java │ ├── InheritanceTest.java │ ├── MethodModifiers.java │ ├── MethodSubClass.java │ ├── MismatchedTypeTest.java │ ├── ModifierTest.java │ ├── MultipleNullTest.java │ ├── MutableLiveDataTest.java │ ├── NonParcelTest.java │ ├── NullableTest.java │ ├── ObservableFieldTest.java │ ├── PackagePrivateConstructorModifier.java │ ├── ParcelTest.java │ ├── ParcelsTestUtil.java │ ├── PrivateConstructorModifier.java │ ├── ProtectedConstructorModifier.java │ ├── PublicConstructorModifier.java │ ├── RealParcelableStrategy.java │ ├── RealmTest.java │ ├── StringArrayStrategy.java │ ├── SubParcelStrategy.java │ ├── TypeRangeConveterTest.java │ ├── sub │ └── SuperClass.java │ └── test │ └── ParcelerTestModelTest.java ├── parceler-api ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── parceler │ │ ├── Generated.java │ │ ├── IdentityCollection.java │ │ ├── InjectionUtil.java │ │ ├── MapsUtil.java │ │ ├── NonParcelRepository.java │ │ ├── OnUnwrap.java │ │ ├── OnWrap.java │ │ ├── Parcel.java │ │ ├── ParcelClass.java │ │ ├── ParcelClasses.java │ │ ├── ParcelConstructor.java │ │ ├── ParcelConverter.java │ │ ├── ParcelFactory.java │ │ ├── ParcelProperty.java │ │ ├── ParcelPropertyConverter.java │ │ ├── ParcelWrapper.java │ │ ├── ParcelerRuntimeException.java │ │ ├── Parcels.java │ │ ├── Repository.java │ │ ├── Transient.java │ │ ├── TypeRangeParcelConverter.java │ │ └── converter │ │ ├── ArrayListParcelConverter.java │ │ ├── BooleanArrayParcelConverter.java │ │ ├── CharArrayParcelConverter.java │ │ ├── CollectionParcelConverter.java │ │ ├── HashMapParcelConverter.java │ │ ├── HashSetParcelConverter.java │ │ ├── LinkedHashMapParcelConverter.java │ │ ├── LinkedHashSetParcelConverter.java │ │ ├── LinkedListParcelConverter.java │ │ ├── MapParcelConverter.java │ │ ├── NullableParcelConverter.java │ │ ├── SparseArrayParcelConverter.java │ │ ├── TreeMapParcelConverter.java │ │ └── TreeSetParcelConverter.java │ └── test │ └── java │ └── org │ └── parceler │ ├── IdentityCollectionTest.java │ ├── ParcelConverterTest.java │ ├── ParcelWrapperTest.java │ └── ParcelableFactoryTest.java ├── parceler ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── parceler │ │ │ ├── ParcelAnnotationProcessor.java │ │ │ └── internal │ │ │ ├── ASTTypeHierarchyIterator.java │ │ │ ├── AccessibleReference.java │ │ │ ├── ConstructorReference.java │ │ │ ├── ExternalParcelRepository.java │ │ │ ├── ExternalParcelRepositoryTransactionWorker.java │ │ │ ├── ExternalParcelTransactionWorker.java │ │ │ ├── FieldReference.java │ │ │ ├── Generators.java │ │ │ ├── MethodReference.java │ │ │ ├── PackageHelperGeneratorAdapter.java │ │ │ ├── ParcelProcessor.java │ │ │ ├── ParcelTransactionWorker.java │ │ │ ├── ParcelableAnalysis.java │ │ │ ├── ParcelableDescriptor.java │ │ │ ├── ParcelableGenerator.java │ │ │ ├── ParcelerInvocationBuilderStrategy.java │ │ │ ├── ParcelerModule.java │ │ │ ├── ParcelerPrivateInvocationBuilder.java │ │ │ ├── ReadContext.java │ │ │ ├── ReadReferenceVisitor.java │ │ │ ├── Reference.java │ │ │ ├── ReferencePair.java │ │ │ ├── ReferenceVisitor.java │ │ │ ├── ResultTransformerProcessor.java │ │ │ ├── WriteContext.java │ │ │ ├── WriteReferenceVisitor.java │ │ │ ├── generator │ │ │ ├── ArrayReadWriteGenerator.java │ │ │ ├── BooleanEntryReadWriteGenerator.java │ │ │ ├── BundleReadWriteGenerator.java │ │ │ ├── ConverterWrapperReadWriteGenerator.java │ │ │ ├── EnumReadWriteGenerator.java │ │ │ ├── LinkParcelReadWriteGenerator.java │ │ │ ├── ListReadWriteGenerator.java │ │ │ ├── MapReadWriteGenerator.java │ │ │ ├── MutableLiveDataReadWriteGenerator.java │ │ │ ├── NullCheckFactory.java │ │ │ ├── NullCheckReadWriteGenerator.java │ │ │ ├── NullCheckReadWriteGeneratorDecorator.java │ │ │ ├── NullCheckReadWriteLazyLookupGenerator.java │ │ │ ├── ObservableFieldReadWriteGenerator.java │ │ │ ├── ParcelReadWriteGenerator.java │ │ │ ├── ParcelableReadWriteGenerator.java │ │ │ ├── ReadWriteGenerator.java │ │ │ ├── ReadWriteGeneratorBase.java │ │ │ ├── RemoterReadWriteGenerator.java │ │ │ ├── SerializableReadWriteGenerator.java │ │ │ ├── SetReadWriteGenerator.java │ │ │ ├── SimpleReadWriteGenerator.java │ │ │ ├── SingleEntryArrayReadWriteGenerator.java │ │ │ └── SparseArrayReadWriteGenerator.java │ │ │ └── matcher │ │ │ ├── EnumMatcher.java │ │ │ ├── FinalParcelableImplementationMatcher.java │ │ │ ├── GenericCollectionMatcher.java │ │ │ ├── MutableLiveDataMatcher.java │ │ │ ├── ObservableFieldMatcher.java │ │ │ ├── ParcelMatcher.java │ │ │ └── RemoterMatcher.java │ └── resources │ │ └── META-INF │ │ └── gradle │ │ └── incremental.annotation.processors │ └── test │ └── java │ └── org │ └── parceler │ └── internal │ ├── ASTTypeHierarchyIteratorTest.java │ ├── CodeGenerationUtil.java │ ├── ErrorCheckingMessager.java │ ├── GeneratorsTest.java │ ├── JavaUtilLogger.java │ ├── MemoryClassLoader.java │ ├── MemoryFileManager.java │ ├── NoOpElements.java │ ├── NoOpFiler.java │ ├── Output.java │ ├── ParcelSecondTarget.java │ ├── ParcelTarget.java │ ├── ParcelTransactionWorkerTest.java │ ├── ParcelableAnalysisTest.java │ ├── ParcelableGeneratorTest.java │ ├── ParcelableIntegrationTest.java │ ├── Source.java │ ├── StringCodeWriter.java │ ├── StringWriterConverter.java │ ├── Target.java │ └── TestParcelerModule.java └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | _site 3 | *~ 4 | *.iml 5 | dependency-reduced-pom.xml 6 | build.sh 7 | target 8 | tmp 9 | out 10 | .gradle 11 | build 12 | .DS_Store 13 | local.properties -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | sudo: false 3 | 4 | jdk: 5 | - oraclejdk8 6 | 7 | android: 8 | components: 9 | - build-tools-23.0.1 10 | - android-23 11 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright ${startYear}-${currentYear} ${name} 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /examples/app/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | org.parceler 7 | parceler-examples 8 | 1.1.13-SNAPSHOT 9 | ../pom.xml 10 | 11 | 12 | parceler-app 13 | apk 14 | 15 | Parceler Sample Android App 16 | 17 | 18 | 19 | org.parceler 20 | parceler 21 | ${project.version} 22 | provided 23 | 24 | 25 | org.parceler 26 | parceler-api 27 | ${project.version} 28 | 29 | 30 | com.google.android 31 | android 32 | 4.1.1.4 33 | provided 34 | 35 | 36 | 37 | 38 | 39 | 40 | com.simpligility.maven.plugins 41 | android-maven-plugin 42 | 4.1.1 43 | true 44 | 45 | 46 | 28 47 | 48 | 49 | 50 | 51 | org.apache.maven.plugins 52 | maven-compiler-plugin 53 | 3.1 54 | 55 | 1.6 56 | 1.6 57 | true 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /examples/app/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system use, 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | 10 | # Indicates whether an apk should be generated for each density. 11 | split.density=false 12 | # Project target. 13 | target=android-19 -------------------------------------------------------------------------------- /examples/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /examples/app/src/main/java/org/demo/ExampleParcel.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2011-2015 John Ericksen 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.demo; 17 | 18 | import org.parceler.Parcel; 19 | import org.parceler.ParcelFactory; 20 | 21 | /** 22 | * Intentionally in a different package to make sure we don't accidentally match it with org.parceler Proguard matchers. 23 | */ 24 | @Parcel 25 | public class ExampleParcel { 26 | 27 | private final String message; 28 | 29 | @ParcelFactory 30 | public static ExampleParcel create(String message) { 31 | return new ExampleParcel(message); 32 | } 33 | 34 | public ExampleParcel(String message) { 35 | this.message = message; 36 | } 37 | 38 | public String getMessage(){ 39 | return message; 40 | } 41 | } -------------------------------------------------------------------------------- /examples/app/src/main/java/org/parceler/app/FirstActivity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2011-2015 John Ericksen 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.parceler.app; 17 | 18 | import android.app.Activity; 19 | import android.content.Intent; 20 | import android.os.Bundle; 21 | import android.view.View; 22 | import android.view.View.OnClickListener; 23 | import android.widget.Button; 24 | import android.widget.TextView; 25 | import org.demo.ExampleParcel; 26 | 27 | import java.lang.reflect.Field; 28 | 29 | public class FirstActivity extends Activity implements OnClickListener { 30 | private TextView messageView; 31 | 32 | @Override 33 | protected void onCreate(Bundle savedInstanceState) { 34 | super.onCreate(savedInstanceState); 35 | setContentView(R.layout.activity_first); 36 | 37 | messageView = (TextView) findViewById(R.id.message); 38 | Button submitView = (Button) findViewById(R.id.submit); 39 | submitView.setOnClickListener(this); 40 | } 41 | 42 | @Override 43 | public void onClick(View view) { 44 | String message = messageView.getText().toString(); 45 | ExampleParcel exampleParcel = ExampleParcel.create(message); 46 | 47 | for (Field field : ExampleParcel.class.getDeclaredFields()) { 48 | System.out.println(field.getName()); 49 | } 50 | 51 | Intent intent = SecondActivity.buildIntent(this, exampleParcel); 52 | startActivity(intent); 53 | } 54 | } -------------------------------------------------------------------------------- /examples/app/src/main/java/org/parceler/app/SecondActivity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2011-2015 John Ericksen 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.parceler.app; 17 | 18 | import android.app.Activity; 19 | import android.content.Context; 20 | import android.content.Intent; 21 | import android.os.Bundle; 22 | import android.widget.TextView; 23 | import org.demo.ExampleParcel; 24 | import org.demo.ExampleParcel$$Parcelable; 25 | import org.parceler.Parcels; 26 | 27 | public class SecondActivity extends Activity { 28 | private static final String EXTRA_EXAMPLE_PARCEL = "example parcel"; 29 | 30 | public static Intent buildIntent(Context context, ExampleParcel exampleParcel) { 31 | Intent intent = new Intent(context, SecondActivity.class); 32 | intent.putExtra(EXTRA_EXAMPLE_PARCEL, new ExampleParcel$$Parcelable(exampleParcel)); 33 | return intent; 34 | } 35 | 36 | @Override 37 | protected void onCreate(Bundle savedInstanceState) { 38 | super.onCreate(savedInstanceState); 39 | 40 | ExampleParcel exampleParcel = Parcels.unwrap(getIntent().getParcelableExtra(EXTRA_EXAMPLE_PARCEL)); 41 | 42 | setContentView(R.layout.activity_second); 43 | TextView messageView = (TextView) findViewById(R.id.message); 44 | messageView.setText(exampleParcel.getMessage()); 45 | } 46 | } -------------------------------------------------------------------------------- /examples/app/src/main/res/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johncarl81/parceler/52e6b14709eb0b84835907e71d9380124f3c6b6e/examples/app/src/main/res/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /examples/app/src/main/res/layout/activity_first.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 24 | 25 | 31 | 32 |