MCPcopy Index your code
hub / github.com/dkunzler/esperandro

github.com/dkunzler/esperandro @4.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 4.0.1 ↗ · + Follow
401 symbols 1,042 edges 79 files 26 documented · 6% updated 8d ago2.2.0 · 2015-03-28★ 1796 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Maven Central Build Status

esperandro

Easy SharedPreference Engine foR ANDROid

What?

esperandro makes it simple to use SharedPreferences in a nicer and less error-prone way.

Without esperandro a key is referenced by a string:

  • String myPreference = preferences.getString("myPreference", "default value") // load preference
  • preferences.edit().putString("myPreference", myPreference).commit() // store preference

With esperandro you adhere to an interface that you defined:

@SharedPreferences
interface MyPreferences {
    String getMyPreference();
    void setMyPreference(String myPreference);
}
  • String myPreference = preferences.getMyPreference() // load preference
  • preferences.setMyPreference(myPreference) // store preference

Type safe, easy, less error-prone.

Interested? Get Started

Tell me more!

Please refer to the wiki for in-depth examples and all available features.

See the changelog for a brief overview of recent changes.

Gradle artifacts

// essential dependencies
implementation 'de.devland.esperandro:esperandro-api:<insert version>'
annotationProcessor 'de.devland.esperandro:esperandro-preference-gen:<insert version>'

// optional, if object serialization is needed via gson
implementation 'de.devland.esperandro:esperandro-gson-addon:<insert version>'

// optional, if object serialization is needed via jackson
implementation 'de.devland.esperandro:esperandro-jackson-addon:<insert version>'

// additional processor to generate a file with all keys as string constants
annotationProcessor 'de.devland.esperandro:esperandro-keys-gen:<insert version>'

// additional processor to generate a file with all keys as string resources
annotationProcessor 'de.devland.esperandro:esperandro-resources-gen:<insert version>'

Extension points exported contracts — how you extend this code

MethodAnalyzer (Interface)
(no doc) [13 implementers]
base/src/main/java/de/devland/esperandro/base/MethodAnalyzer.java
MethodGenerator (Interface)
(no doc) [6 implementers]
preference-processor/src/main/java/de/devland/esperandro/generation/MethodGenerator.java
Serializer (Interface)
(no doc) [4 implementers]
api/src/main/java/de/devland/esperandro/serialization/Serializer.java
EsperandroInheritanceExample (Interface)
The generated class for this interface will inherit all preferences of EsperandroSimpleExample.
sample/src/main/java/com/example/esperandro/EsperandroInheritanceExample.java
EsperandroInheritanceExample (Interface)
The generated class for this interface will inherit all preferences of EsperandroSimpleExample.
tests/src/main/java/de/devland/esperandro/tests/EsperandroInheritanceExample.java
GeneratorAwareAnalyzer (Interface)
(no doc) [10 implementers]
preference-processor/src/main/java/de/devland/esperandro/analysis/GeneratorAwareAnalyzer.java
CacheActions (Interface)
Created by David Kunzler on 25.07.2016. [1 implementers]
api/src/main/java/de/devland/esperandro/CacheActions.java
EsperandroSimpleExample (Interface)
(no doc)
sample/src/main/java/com/example/esperandro/EsperandroSimpleExample.java

Core symbols most depended-on inside this repo

get
called by 62
api/src/main/java/de/devland/esperandro/SharedPreferenceActions.java
contains
called by 36
api/src/main/java/de/devland/esperandro/SharedPreferenceActions.java
getEsperandroType
called by 28
base/src/main/java/de/devland/esperandro/base/preferences/TypeInformation.java
addMethod
called by 21
base/src/main/java/de/devland/esperandro/base/preferences/PreferenceInterface.java
getAnnotation
called by 17
base/src/main/java/de/devland/esperandro/base/preferences/MethodInformation.java
getMethodName
called by 14
preference-processor/src/main/java/de/devland/esperandro/generation/GenericActionsGenerator.java
getType
called by 12
base/src/main/java/de/devland/esperandro/base/preferences/TypeInformation.java
getTypeOfPreference
called by 12
base/src/main/java/de/devland/esperandro/base/preferences/PreferenceInterface.java

Shape

Method 326
Class 51
Interface 19
Enum 5

Languages

Java100%

Modules by API surface

tests/src/main/java/de/devland/esperandro/tests/EsperandroSerializationExample.java17 symbols
tests/src/main/java/de/devland/esperandro/tests/EsperandroCollectionExample.java17 symbols
tests/src/main/java/de/devland/esperandro/tests/EsperandroSimpleExample.java15 symbols
tests/src/main/java/de/devland/esperandro/tests/EsperandroDefaultsExample.java14 symbols
api/src/main/java/de/devland/esperandro/SharedPreferenceActions.java14 symbols
tests/src/test/java/de/devland/esperandro/CacheTest.java13 symbols
tests/src/test/java/de/devland/esperandro/CollectionTest.java11 symbols
tests/src/test/java/de/devland/esperandro/UnsafeTest.java10 symbols
tests/src/main/java/de/devland/esperandro/tests/EsperandroCacheOnPutExample.java10 symbols
preference-processor/src/main/java/de/devland/esperandro/analysis/PutterAnalyzer.java10 symbols
preference-processor/src/main/java/de/devland/esperandro/analysis/GetterAnalyzer.java10 symbols
api/src/main/java/de/devland/esperandro/Esperandro.java10 symbols

For agents

$ claude mcp add esperandro \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page