Skip to content

Commit 2bc8a64

Browse files
authored
Merge pull request #193 from Jeffset/public-component-name
[api] Generate public component names.
2 parents 511cf4c + 8560ece commit 2bc8a64

105 files changed

Lines changed: 7960 additions & 7953 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api/public/src/main/kotlin/com/yandex/yatagan/internal/DefaultImplementationLoader.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,18 @@ internal class DefaultImplementationLoader : ImplementationLoader {
8181
val (packageName, binaryName) = splitComponentName(componentClass)
8282
// no need to parse and join simple names, as codegen joins them with '$' and
8383
// that's what JVM binary class name already is.
84-
val implementationName = "$packageName.Yatagan\$$binaryName"
84+
val implementationName = "$packageName.Yatagan${binaryName.replace('$', '_')}"
8585

86-
return componentClass.classLoader.loadClass(implementationName)
86+
return try {
87+
componentClass.classLoader.loadClass(implementationName)
88+
} catch (e1: ClassNotFoundException) {
89+
// fallback to the legacy loader name
90+
try {
91+
componentClass.classLoader.loadClass("$packageName.Yatagan\$$binaryName")
92+
} catch (e2: ClassNotFoundException) {
93+
throw e2.also { it.addSuppressed(e1) }
94+
}
95+
}
8796
}
8897

8998
private fun splitComponentName(clazz: Class<*>): Pair<String, String> {

api/public/src/main/resources/META-INF/proguard/yatagan.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Keep generated components, as they are accessed with a reflection call.
2-
-keep class **.Yatagan$* {
2+
-keep class **.Yatagan* {
33
# Keep creating methods - called via reflection.
44
public * autoBuilder();
55
public * builder();

codegen/impl/src/main/kotlin/com/yandex/yatagan/codegen/impl/generatorUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ internal fun formatImplementationClassName(graph: BindingGraph): ClassName {
108108
else -> throw AssertionError("Unexpected component name: $it")
109109
}
110110
// Keep name mangling in sync with loader!
111-
ClassName.get(name.packageName, "Yatagan$" + name.simpleNames.joinToString(separator = "$"))
111+
ClassName.get(name.packageName, "Yatagan" + name.simpleNames.joinToString(separator = "_"))
112112
}
113113
else -> with(parent[GeneratorComponent]) {
114114
implementationClassName.nestedClass(

testing/tests/src/test/kotlin/com/yandex/yatagan/testing/tests/RtOnlyTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,21 @@ class RtOnlyTest : CompileTestDriver by DynamicCompileTestDriver() {
3939
const val ID1 = 1234567
4040
const val ID2 = 89101112
4141
42-
class `Yatagan${'$'}MyComponent` : MyComponent {
42+
class YataganMyComponent : MyComponent {
4343
override fun getInt(): Int = ID1
4444
companion object {
4545
@JvmStatic fun autoBuilder() = object : AutoBuilder<MyComponent> {
4646
override fun <I : Any> provideInput(i: I, c: Class<I>) = throw AssertionError()
47-
override fun create() = `Yatagan${'$'}MyComponent`()
47+
override fun create() = YataganMyComponent()
4848
}
4949
}
5050
}
5151
52-
class `Yatagan${'$'}MyComponentWithBuilder` : MyComponentWithBuilder {
52+
class YataganMyComponentWithBuilder : MyComponentWithBuilder {
5353
override fun getInt(): Int = ID2
5454
companion object {
5555
@JvmStatic fun builder() = object : MyComponentWithBuilder.Builder {
56-
override fun create() = `Yatagan${'$'}MyComponentWithBuilder`()
56+
override fun create() = YataganMyComponentWithBuilder()
5757
}
5858
}
5959
}

testing/tests/src/test/resources/golden/AccessControlTest/-Binds-declarations-can-be-package-private.golden-code.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2-
Name: test/Yatagan$TestComponent.java
2+
Name: test/YataganTestComponent.java
33
package test;
44

55
import com.yandex.yatagan.AutoBuilder;
@@ -15,10 +15,10 @@ import javax.annotation.processing.Generated;
1515
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
1616
@YataganGenerated
1717
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
18-
public final class Yatagan$TestComponent implements TestComponent {
18+
public final class YataganTestComponent implements TestComponent {
1919
final boolean mMyFeatureSEnabled = MyFeature.sEnabled;
2020

21-
private Yatagan$TestComponent() {
21+
private YataganTestComponent() {
2222
}
2323

2424
@Override
@@ -41,20 +41,20 @@ public final class Yatagan$TestComponent implements TestComponent {
4141
return new MyClassD();
4242
}
4343

44-
public static AutoBuilder<Yatagan$TestComponent> autoBuilder() {
44+
public static AutoBuilder<YataganTestComponent> autoBuilder() {
4545
return new AutoBuilderImpl();
4646
}
4747

48-
private static final class AutoBuilderImpl implements AutoBuilder<Yatagan$TestComponent> {
48+
private static final class AutoBuilderImpl implements AutoBuilder<YataganTestComponent> {
4949
@Override
50-
public final <I> AutoBuilder<Yatagan$TestComponent> provideInput(I input, Class<I> inputClass) {
50+
public final <I> AutoBuilder<YataganTestComponent> provideInput(I input, Class<I> inputClass) {
5151
Checks.reportUnexpectedAutoBuilderInput(input.getClass(), Collections.emptyList());
5252
return this;
5353
}
5454

5555
@Override
56-
public final Yatagan$TestComponent create() {
57-
return new Yatagan$TestComponent();
56+
public final YataganTestComponent create() {
57+
return new YataganTestComponent();
5858
}
5959
}
6060
}

testing/tests/src/test/resources/golden/ComponentCreatorFailureTest/invalid-sub-component-factory-methods.golden-code.txt

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2-
Name: test/Yatagan$RootComponent2.java
2+
Name: test/YataganRootComponent2.java
33
package test;
44

55
import com.yandex.yatagan.AutoBuilder;
@@ -14,16 +14,16 @@ import javax.annotation.processing.Generated;
1414
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
1515
@YataganGenerated
1616
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
17-
public final class Yatagan$RootComponent2 implements RootComponent2 {
18-
private Yatagan$RootComponent2() {
17+
public final class YataganRootComponent2 implements RootComponent2 {
18+
private YataganRootComponent2() {
1919
}
2020

2121
@Override
2222
public SubComponent1.Factory sub1EP() {
2323
return new SubComponent1Impl.ComponentFactoryImpl();
2424
}
2525

26-
public static AutoBuilder<Yatagan$RootComponent2> autoBuilder() {
26+
public static AutoBuilder<YataganRootComponent2> autoBuilder() {
2727
return new AutoBuilderImpl();
2828
}
2929

@@ -45,17 +45,16 @@ public final class Yatagan$RootComponent2 implements RootComponent2 {
4545
}
4646
}
4747

48-
private static final class AutoBuilderImpl implements AutoBuilder<Yatagan$RootComponent2> {
48+
private static final class AutoBuilderImpl implements AutoBuilder<YataganRootComponent2> {
4949
@Override
50-
public final <I> AutoBuilder<Yatagan$RootComponent2> provideInput(I input,
51-
Class<I> inputClass) {
50+
public final <I> AutoBuilder<YataganRootComponent2> provideInput(I input, Class<I> inputClass) {
5251
Checks.reportUnexpectedAutoBuilderInput(input.getClass(), Collections.emptyList());
5352
return this;
5453
}
5554

5655
@Override
57-
public final Yatagan$RootComponent2 create() {
58-
return new Yatagan$RootComponent2();
56+
public final YataganRootComponent2 create() {
57+
return new YataganRootComponent2();
5958
}
6059
}
6160
}

testing/tests/src/test/resources/golden/ComponentCreatorFailureTest/missing-creator.golden-code.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2-
Name: test/Yatagan$AnotherRootComponent.java
2+
Name: test/YataganAnotherRootComponent.java
33
package test;
44

55
import com.yandex.yatagan.AutoBuilder;
@@ -14,25 +14,25 @@ import javax.annotation.processing.Generated;
1414
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
1515
@YataganGenerated
1616
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
17-
public final class Yatagan$AnotherRootComponent implements AnotherRootComponent {
18-
private Yatagan$AnotherRootComponent() {
17+
public final class YataganAnotherRootComponent implements AnotherRootComponent {
18+
private YataganAnotherRootComponent() {
1919
}
2020

21-
public static AutoBuilder<Yatagan$AnotherRootComponent> autoBuilder() {
21+
public static AutoBuilder<YataganAnotherRootComponent> autoBuilder() {
2222
return new AutoBuilderImpl();
2323
}
2424

25-
private static final class AutoBuilderImpl implements AutoBuilder<Yatagan$AnotherRootComponent> {
25+
private static final class AutoBuilderImpl implements AutoBuilder<YataganAnotherRootComponent> {
2626
@Override
27-
public final <I> AutoBuilder<Yatagan$AnotherRootComponent> provideInput(I input,
27+
public final <I> AutoBuilder<YataganAnotherRootComponent> provideInput(I input,
2828
Class<I> inputClass) {
2929
Checks.reportUnexpectedAutoBuilderInput(input.getClass(), Collections.emptyList());
3030
return this;
3131
}
3232

3333
@Override
34-
public final Yatagan$AnotherRootComponent create() {
35-
return new Yatagan$AnotherRootComponent();
34+
public final YataganAnotherRootComponent create() {
35+
return new YataganAnotherRootComponent();
3636
}
3737
}
3838
}

testing/tests/src/test/resources/golden/ComponentDependenciesKotlinTest/component-dependencies-basic-case.golden-code.txt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2-
Name: test/Yatagan$MyApplicationComponent.java
2+
Name: test/YataganMyApplicationComponent.java
33
package test;
44

55
import com.yandex.yatagan.internal.YataganGenerated;
@@ -10,8 +10,8 @@ import javax.annotation.processing.Generated;
1010
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
1111
@YataganGenerated
1212
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
13-
public final class Yatagan$MyApplicationComponent implements MyApplicationComponent {
14-
Yatagan$MyApplicationComponent() {
13+
public final class YataganMyApplicationComponent implements MyApplicationComponent {
14+
YataganMyApplicationComponent() {
1515
}
1616

1717
@Override
@@ -26,13 +26,13 @@ public final class Yatagan$MyApplicationComponent implements MyApplicationCompon
2626
private static final class ComponentFactoryImpl implements MyApplicationComponent.Factory {
2727
@Override
2828
public MyApplicationComponent create() {
29-
return new Yatagan$MyApplicationComponent();
29+
return new YataganMyApplicationComponent();
3030
}
3131
}
3232
}
3333

3434
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35-
Name: test/Yatagan$MyActivityComponent.java
35+
Name: test/YataganMyActivityComponent.java
3636
package test;
3737

3838
import com.yandex.yatagan.Lazy;
@@ -49,10 +49,10 @@ import javax.inject.Provider;
4949
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
5050
@YataganGenerated
5151
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
52-
public final class Yatagan$MyActivityComponent implements MyActivityComponent {
52+
public final class YataganMyActivityComponent implements MyActivityComponent {
5353
final MyApplicationComponent mMyApplicationComponent;
5454

55-
Yatagan$MyActivityComponent(MyApplicationComponent pApp) {
55+
YataganMyActivityComponent(MyApplicationComponent pApp) {
5656
this.mMyApplicationComponent = Checks.checkInputNotNull(pApp);
5757
}
5858

@@ -83,11 +83,11 @@ public final class Yatagan$MyActivityComponent implements MyActivityComponent {
8383
}
8484

8585
static final class ProviderImpl implements Lazy {
86-
private final Yatagan$MyActivityComponent mDelegate;
86+
private final YataganMyActivityComponent mDelegate;
8787

8888
private final int mIndex;
8989

90-
ProviderImpl(Yatagan$MyActivityComponent delegate, int index) {
90+
ProviderImpl(YataganMyActivityComponent delegate, int index) {
9191
this.mDelegate = delegate;
9292
this.mIndex = index;
9393
}
@@ -99,13 +99,13 @@ public final class Yatagan$MyActivityComponent implements MyActivityComponent {
9999
}
100100

101101
private static final class CachingProviderImpl implements Lazy {
102-
private final Yatagan$MyActivityComponent mDelegate;
102+
private final YataganMyActivityComponent mDelegate;
103103

104104
private final int mIndex;
105105

106106
private Object mValue;
107107

108-
CachingProviderImpl(Yatagan$MyActivityComponent factory, int index) {
108+
CachingProviderImpl(YataganMyActivityComponent factory, int index) {
109109
mDelegate = factory;
110110
mIndex = index;
111111
}
@@ -125,7 +125,7 @@ public final class Yatagan$MyActivityComponent implements MyActivityComponent {
125125
private static final class ComponentFactoryImpl implements MyActivityComponent.Factory {
126126
@Override
127127
public MyActivityComponent create(MyApplicationComponent app) {
128-
return new Yatagan$MyActivityComponent(app);
128+
return new YataganMyActivityComponent(app);
129129
}
130130
}
131131
}

testing/tests/src/test/resources/golden/ComponentDependenciesKotlinTest/component-dependencies-dependency-component-instance-is-available-for-inject.golden-code.txt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2-
Name: test/Yatagan$MyApplicationComponent.java
2+
Name: test/YataganMyApplicationComponent.java
33
package test;
44

55
import com.yandex.yatagan.internal.YataganGenerated;
@@ -10,8 +10,8 @@ import javax.annotation.processing.Generated;
1010
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
1111
@YataganGenerated
1212
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
13-
public final class Yatagan$MyApplicationComponent implements MyApplicationComponent {
14-
Yatagan$MyApplicationComponent() {
13+
public final class YataganMyApplicationComponent implements MyApplicationComponent {
14+
YataganMyApplicationComponent() {
1515
}
1616

1717
public static MyApplicationComponent.Factory builder() {
@@ -21,13 +21,13 @@ public final class Yatagan$MyApplicationComponent implements MyApplicationCompon
2121
private static final class ComponentFactoryImpl implements MyApplicationComponent.Factory {
2222
@Override
2323
public MyApplicationComponent create() {
24-
return new Yatagan$MyApplicationComponent();
24+
return new YataganMyApplicationComponent();
2525
}
2626
}
2727
}
2828

2929
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30-
Name: test/Yatagan$MyActivityComponent.java
30+
Name: test/YataganMyActivityComponent.java
3131
package test;
3232

3333
import com.yandex.yatagan.Lazy;
@@ -44,10 +44,10 @@ import javax.inject.Provider;
4444
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
4545
@YataganGenerated
4646
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
47-
public final class Yatagan$MyActivityComponent implements MyActivityComponent {
47+
public final class YataganMyActivityComponent implements MyActivityComponent {
4848
final MyApplicationComponent mMyApplicationComponent;
4949

50-
Yatagan$MyActivityComponent(MyApplicationComponent pApp) {
50+
YataganMyActivityComponent(MyApplicationComponent pApp) {
5151
this.mMyApplicationComponent = Checks.checkInputNotNull(pApp);
5252
}
5353

@@ -78,11 +78,11 @@ public final class Yatagan$MyActivityComponent implements MyActivityComponent {
7878
}
7979

8080
static final class ProviderImpl implements Lazy {
81-
private final Yatagan$MyActivityComponent mDelegate;
81+
private final YataganMyActivityComponent mDelegate;
8282

8383
private final int mIndex;
8484

85-
ProviderImpl(Yatagan$MyActivityComponent delegate, int index) {
85+
ProviderImpl(YataganMyActivityComponent delegate, int index) {
8686
this.mDelegate = delegate;
8787
this.mIndex = index;
8888
}
@@ -94,13 +94,13 @@ public final class Yatagan$MyActivityComponent implements MyActivityComponent {
9494
}
9595

9696
private static final class CachingProviderImpl implements Lazy {
97-
private final Yatagan$MyActivityComponent mDelegate;
97+
private final YataganMyActivityComponent mDelegate;
9898

9999
private final int mIndex;
100100

101101
private Object mValue;
102102

103-
CachingProviderImpl(Yatagan$MyActivityComponent factory, int index) {
103+
CachingProviderImpl(YataganMyActivityComponent factory, int index) {
104104
mDelegate = factory;
105105
mIndex = index;
106106
}
@@ -120,7 +120,7 @@ public final class Yatagan$MyActivityComponent implements MyActivityComponent {
120120
private static final class ComponentFactoryImpl implements MyActivityComponent.Factory {
121121
@Override
122122
public MyActivityComponent create(MyApplicationComponent app) {
123-
return new Yatagan$MyActivityComponent(app);
123+
return new YataganMyActivityComponent(app);
124124
}
125125
}
126126
}

testing/tests/src/test/resources/golden/ComponentDependenciesKotlinTest/plain-interfaces-are-allowed-as-dependencies.golden-code.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2-
Name: test/Yatagan$MyComponent.java
2+
Name: test/YataganMyComponent.java
33
package test;
44

55
import com.yandex.yatagan.internal.Checks;
@@ -11,10 +11,10 @@ import javax.annotation.processing.Generated;
1111
@SuppressWarnings({"unchecked", "rawtypes", "NullableProblems"})
1212
@YataganGenerated
1313
@Generated("com.yandex.yatagan.codegen.impl.ComponentGenerator")
14-
public final class Yatagan$MyComponent implements MyComponent {
14+
public final class YataganMyComponent implements MyComponent {
1515
final Dependencies mDependencies;
1616

17-
Yatagan$MyComponent(Dependencies pDep) {
17+
YataganMyComponent(Dependencies pDep) {
1818
this.mDependencies = Checks.checkInputNotNull(pDep);
1919
}
2020

@@ -30,7 +30,7 @@ public final class Yatagan$MyComponent implements MyComponent {
3030
private static final class ComponentFactoryImpl implements MyComponent.Builder {
3131
@Override
3232
public MyComponent create(Dependencies dep) {
33-
return new Yatagan$MyComponent(dep);
33+
return new YataganMyComponent(dep);
3434
}
3535
}
3636
}

0 commit comments

Comments
 (0)