lombok-intellij-plugin
lombok-intellij-plugin copied to clipboard
Some files cannot be opened (stuck at loading) in Android Studio
Some of my java files I've written earlier cannot be opened by the Android Studio, stucking at "loading" screen. I've filed an issue to google and they directed me to here.
I know this plugin is not 100% compatible so I've used the workaround mentioned in another topic here. If it's not possible to solve this, I'll have to delombokize tons of old code.
Version information
- Android Studio Version: Cjipmunk 2021.2.1 Patch 2
- JDK Version: 11.0.12
- OS Type & Version: Windows 11
- Lombok Plugin Version: 0.34.1-2019.1
Steps to reproduce
I'm not sure if it can be reproduced but here's one of the problematic java files:
package com.frekanstan.asset_management.app;
import android.os.Bundle;
import androidx.lifecycle.LiveData;
import androidx.paging.LivePagedListBuilder;
import androidx.paging.PagedList;
import com.frekanstan.asset_management.data.IEntity;
import com.google.common.primitives.Longs;
import org.apache.commons.lang3.ArrayUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import io.objectbox.Box;
import io.objectbox.TxCallback;
import io.objectbox.android.AndroidScheduler;
import io.objectbox.android.ObjectBoxDataSource;
import io.objectbox.query.Query;
import io.objectbox.reactive.DataObserver;
import io.objectbox.reactive.DataSubscription;
import lombok.val;
public abstract class DAO<TEntity extends IEntity> implements IDAO<TEntity>
{
@Override
public abstract Box<TEntity> getBox();
private final HashMap<String, long[]> idIndex = new HashMap<>();
@Override
public long[] getIdIndex(String key) {
return idIndex.get(key);
}
@Override
public int getIndexOf(String key, long id) {
return Longs.indexOf(getIdIndex(key), id);
}
@Override
public TEntity get(long id) {
return getBox().get(id);
}
@Override
public ArrayList<TEntity> getAll() {
return new ArrayList<>(getBox().getAll());
}
@Override
public ArrayList<TEntity> getAll(Bundle input) {
return new ArrayList<>(createFilteredQuery(input).find());
}
@Override
public ArrayList<TEntity> getAll(List<Long> ids) {
return new ArrayList<>(getBox().get(ids));
}
@Override
public long count() {
return getBox().count();
}
@Override
public long count(Bundle input) {
return createFilteredQuery(input).count();
}
@Override
public long put(TEntity item) {
return getBox().put(item);
}
@Override
public void putAll(List<TEntity> items) {
getBox().put(items);
}
@Override
public void putAllAsync(List<TEntity> items, TxCallback<Void> callback) {
getBox().getStore().runInTxAsync(() -> DAO.this.getBox().put(items), callback);
}
@Override
public void remove(TEntity item) {
getBox().remove(item);
}
@Override
public void removeAll() {
getBox().removeAll();
}
@Override
public void removeAll(List<TEntity> items) {
getBox().remove(items);
}
@Override
public ArrayList<Long> getAllIds(Bundle input) {
val ids = ArrayUtils.toObject(createFilteredQuery(input).findIds());
return new ArrayList<>(Arrays.asList(ids));
}
@Override
public LiveData<PagedList<TEntity>> getAllLiveData(Bundle bundle) {
val query = createFilteredQuery(bundle);
//idIndex.put(bundle.getString("listType", "default"), query.findIds());
val dataSourceFactory = new ObjectBoxDataSource.Factory<>(query);
return new LivePagedListBuilder<>(dataSourceFactory, 20).build();
}
@Override
public LiveData<PagedList<TEntity>> getAllLiveData(Bundle bundle, TxCallback<Void> indexCallback) {
val query = createFilteredQuery(bundle);
//getBox().getStore().runInTxAsync(() -> idIndex.put(bundle.getString("listType", "default"), query.findIds()), indexCallback);
val dataSourceFactory = new ObjectBoxDataSource.Factory<>(query);
//dataSourceFactory.map((x) -> x);
return new LivePagedListBuilder<>(dataSourceFactory, 20).build();
}
@Override
public Query<TEntity> createFilteredQuery(Bundle input) {
return getBox().query().build();
}
@Override
public DataSubscription subscribe(DataObserver<List<TEntity>> observer, Bundle input) {
return createFilteredQuery(input).subscribe().on(AndroidScheduler.mainThread()).observer(observer);
}
}
Stacktrace
Here's the stacktrace (idea.log):