Search in sources :

Example 1 with SymbolEntry

use of com.android.builder.internal.SymbolLoader.SymbolEntry in project bazel by bazelbuild.

the class RClassGenerator method getSymbols.

private static Table<String, String, SymbolEntry> getSymbols(SymbolLoader symbolLoader) throws IOException {
    // TODO(bazel-team): remove when we update android_ide_common to a version w/ public visibility
    try {
        Method getSymbols = SymbolLoader.class.getDeclaredMethod("getSymbols");
        getSymbols.setAccessible(true);
        @SuppressWarnings("unchecked") Table<String, String, SymbolEntry> result = (Table<String, String, SymbolEntry>) getSymbols.invoke(symbolLoader);
        return result;
    } catch (ReflectiveOperationException e) {
        throw new IOException(e);
    }
}
Also used : HashBasedTable(com.google.common.collect.HashBasedTable) Table(com.google.common.collect.Table) SymbolEntry(com.android.builder.internal.SymbolLoader.SymbolEntry) Method(java.lang.reflect.Method) IOException(java.io.IOException)

Example 2 with SymbolEntry

use of com.android.builder.internal.SymbolLoader.SymbolEntry in project bazel by bazelbuild.

the class RClassGenerator method getInitializers.

private static List<FieldInitializer> getInitializers(String typeName, Table<String, String, SymbolEntry> symbols, Table<String, String, SymbolEntry> values) {
    Map<String, SymbolEntry> rowMap = symbols.row(typeName);
    Set<String> symbolSet = rowMap.keySet();
    List<String> symbolList = new ArrayList<>(symbolSet);
    Collections.sort(symbolList);
    List<FieldInitializer> initializers = new ArrayList<>();
    for (String symbolName : symbolList) {
        // get the matching SymbolEntry from the values Table.
        SymbolEntry value = values.get(typeName, symbolName);
        if (value != null) {
            if (value.getType().equals("int")) {
                initializers.add(IntFieldInitializer.of(value.getName(), value.getValue()));
            } else {
                Preconditions.checkArgument(value.getType().equals("int[]"));
                initializers.add(IntArrayFieldInitializer.of(value.getName(), value.getValue()));
            }
        } else {
            // Value may be missing if resource overriding eliminates resources at the binary
            // level, which were originally present at the library level.
            logger.fine(String.format("Skipping R.%s.%s -- value not known in binary's R.txt", typeName, symbolName));
        }
    }
    return initializers;
}
Also used : SymbolEntry(com.android.builder.internal.SymbolLoader.SymbolEntry) ArrayList(java.util.ArrayList)

Aggregations

SymbolEntry (com.android.builder.internal.SymbolLoader.SymbolEntry)2 HashBasedTable (com.google.common.collect.HashBasedTable)1 Table (com.google.common.collect.Table)1 IOException (java.io.IOException)1 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1