Skip to content

Commit 435fd7d

Browse files
Kajetan FuchsbergerKajetan Fuchsberger
Kajetan Fuchsberger
authored and
Kajetan Fuchsberger
committed
Fixed wrongly determined classes for tensorbackeds
1 parent a8b3e31 commit 435fd7d

7 files changed

+20
-39
lines changed

src/java/org/tensorics/core/tensorbacked/Tensorbackeds.java

+13-5
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222

2323
package org.tensorics.core.tensorbacked;
2424

25-
import static org.tensorics.core.util.Classes.classOf;
26-
2725
import java.util.Set;
2826

2927
import org.tensorics.core.quantity.QuantifiedValue;
@@ -34,7 +32,17 @@
3432
import org.tensorics.core.tensor.lang.QuantityTensors;
3533
import org.tensorics.core.tensor.lang.TensorStructurals;
3634
import org.tensorics.core.tensorbacked.annotation.Dimensions;
37-
import org.tensorics.core.tensorbacked.dimtyped.*;
35+
import org.tensorics.core.tensorbacked.dimtyped.DimtypedTensorbackedBuilderImpl;
36+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked1d;
37+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked1dBuilder;
38+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked2d;
39+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked2dBuilder;
40+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked3d;
41+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked3dBuilder;
42+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked4d;
43+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked4dBuilder;
44+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked5d;
45+
import org.tensorics.core.tensorbacked.dimtyped.Tensorbacked5dBuilder;
3846
import org.tensorics.core.tensorbacked.lang.OngoingTensorbackedConstruction;
3947
import org.tensorics.core.tensorbacked.lang.OngoingTensorbackedFiltering;
4048
import org.tensorics.core.units.Unit;
@@ -281,12 +289,12 @@ public static <TB extends Tensorbacked<E>, TBOUT extends Tensorbacked<E>, E> TBO
281289
}
282290

283291
public static final <V, TB extends Tensorbacked<V>> TB stripContext(TB tensorbacked) {
284-
TB toReturn = builderFor(classOf(tensorbacked)).putAll(tensorbacked.tensor()).build();
292+
TB toReturn = builderFor(TensorbackedInternals.classOf(tensorbacked)).putAll(tensorbacked.tensor()).build();
285293
return toReturn;
286294
}
287295

288296
public static <V, TB extends Tensorbacked<V>> TB setContext(TB tensorbacked, Position context) {
289-
return builderFor(classOf(tensorbacked)).context(context).putAll(tensorbacked.tensor()).build();
297+
return builderFor(TensorbackedInternals.classOf(tensorbacked)).context(context).putAll(tensorbacked.tensor()).build();
290298
}
291299

292300
public static final <V, TB extends Tensorbacked<V>> OngoingTensorbackedFiltering<V, TB> filter(TB tensorbacked) {

src/java/org/tensorics/core/tensorbacked/lang/OngoingQuantifiedTensorBackedOperation.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.tensorics.core.tensor.Tensor;
3434
import org.tensorics.core.tensor.operations.ElementBinaryOperation;
3535
import org.tensorics.core.tensorbacked.Tensorbacked;
36+
import org.tensorics.core.tensorbacked.TensorbackedInternals;
3637

3738
/**
3839
* Part of the tensorics fluent API that provides methods to describe the right hand part of binary operations on tensor
@@ -113,12 +114,8 @@ public QTB elementDividedByV(QuantifiedValue<S> value) {
113114
private QTB evaluate(Tensor<QuantifiedValue<S>> right, BinaryOperation<QuantifiedValue<S>> operation) {
114115
Tensor<QuantifiedValue<S>> perform = new ElementBinaryOperation<>(operation,
115116
pseudoField.environment().options()).perform(left.tensor(), right);
116-
return createBackedByTensor(classOf(left), perform);
117-
}
118-
119-
@SuppressWarnings("unchecked")
120-
private Class<QTB> classOf(QTB tensorBacked) {
121-
return (Class<QTB>) tensorBacked.getClass();
117+
return createBackedByTensor(TensorbackedInternals.classOf(left), perform);
122118
}
123119

120+
124121
}

src/java/org/tensorics/core/tensorbacked/lang/OngoingTensorbackedFiltering.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
// @formatter:on
2222
package org.tensorics.core.tensorbacked.lang;
2323

24-
import static org.tensorics.core.util.Classes.classOf;
25-
2624
import org.tensorics.core.tensor.lang.TensorStructurals;
2725
import org.tensorics.core.tensorbacked.Tensorbacked;
2826
import org.tensorics.core.tensorbacked.TensorbackedInternals;
@@ -39,7 +37,7 @@ public OngoingTensorbackedFiltering(TB tensorbacked) {
3937
}
4038

4139
public <C extends Comparable<C>> TB by(Class<C> coordinateClass, Range<C> coordinateRange) {
42-
return TensorbackedInternals.createBackedByTensor(classOf(tensorbacked),
40+
return TensorbackedInternals.createBackedByTensor(TensorbackedInternals.classOf(tensorbacked),
4341
TensorStructurals.filter(tensorbacked.tensor()).by(coordinateClass, coordinateRange));
4442
}
4543

src/java/org/tensorics/core/tensorbacked/lang/QuantityTensorbackedSupport.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ public <QTB extends Tensorbacked<QuantifiedValue<V>>> OngoingQuantifiedTensorBac
5454
public <QTB extends Tensorbacked<QuantifiedValue<V>>> QTB negativeOf(QTB tensorBacked) {
5555
Tensor<QuantifiedValue<V>> perform = new ElementUnaryOperation<>(pseudoField.additiveInversion())
5656
.perform(tensorBacked.tensor());
57-
/* safe cast since we ensure QTB as a type in the argument! */
58-
@SuppressWarnings("unchecked")
59-
Class<QTB> tensorBackedClass = (Class<QTB>) tensorBacked.getClass();
57+
Class<QTB> tensorBackedClass = TensorbackedInternals.classOf(tensorBacked);
6058
return TensorbackedInternals.createBackedByTensor(tensorBackedClass, perform);
6159
}
6260

src/java/org/tensorics/core/tensorbacked/lang/TensorbackedExpressionSupport.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public final <TB extends Tensorbacked<V>> Expression<TB> elementNegativeOfTB(Exp
4949

5050
public final <TB extends Tensorbacked<V>> OngoingDeferredTensorBackedOperation<V, TB> calculateTB(
5151
Class<TB> resultClass, Expression<TB> left) {
52-
return new OngoingDeferredTensorBackedOperation<V, TB>(environment, resultClass, left);
52+
return new OngoingDeferredTensorBackedOperation<>(environment, resultClass, left);
5353
}
5454

5555
}

src/java/org/tensorics/core/util/Classes.java

-7
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,4 @@ public static Multiset<Class<?>> classesOf(Iterable<?> coordinates) {
7070
return builder.build();
7171
}
7272

73-
public static <T> Class<T> classOf(T object) {
74-
@SuppressWarnings("unchecked")
75-
/* This cast is always safe, right? */
76-
Class<T> toReturn = (Class<T>) object.getClass();
77-
return toReturn;
78-
}
79-
8073
}

src/test/org/tensorics/core/util/ClassesTest.java

+1-14
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
package org.tensorics.core.util;
2424

25-
import static org.junit.Assert.assertNotNull;
2625
import static org.tensorics.core.testing.TestUtil.assertUtilityClass;
2726

2827
import org.junit.Test;
@@ -34,19 +33,7 @@ public void verifyUtilityClass() {
3433
assertUtilityClass(Classes.class);
3534
}
3635

37-
@Test
38-
public void classOfLastClassDoesNotThrow() {
39-
ChildClass object = new ChildClass();
40-
Class<ChildClass> theClass = Classes.classOf(object);
41-
assertNotNull(theClass);
42-
}
43-
44-
@Test
45-
public void classOfParentClassDoesNotThrow() {
46-
ParentClass object = new ChildClass();
47-
Class<ParentClass> theClass = Classes.classOf(object);
48-
assertNotNull(theClass);
49-
}
36+
5037

5138
private class ParentClass {
5239
/* Only for testing the hierarchy */

0 commit comments

Comments
 (0)