-
Список говнокодов пользователя someone
Всего: 116
-
+73
- 1
- 2
- 3
- 4
- 5
- 6
- 7
@GET
@Path("/store")
void getStoreSummary(@QueryParam("id") final String id, final MethodCallback<StoreSummary> callback);
@GET
@Path("/store")
void getStoreDetails(@QueryParam("id") final String id, @QueryParam("detailed") final boolean mustBeTrue, final MethodCallback<StoreInfo> callback);
Есть API-вызов HTTP GET, который по ?detailed=true возвращает расширенный JSON с дополнительными полями.
И вот в RestyGWT, оказывается, по-другому никак. То есть если бы других параметров запроса не было, можно было бы просто написать
@Path("/store?detailed=true")
. Но он не умеет добавлять динамические параметры запроса к захардкоженным. Если попытаться - получается два вопросительных знака: [/code]/store?detailed=true?id=[id][/code].
someone,
06 Ноября 2014
-
+79
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
Object o1 = true ? Integer.valueOf(1) : Double.valueOf(2.0);
Object o2;
if (true) {
o2 = Integer.valueOf(1);
} else {
o2 = Double.valueOf(2.0);
}
System.out.println(o1);
System.out.println(o2);
Такие вот в Java интересные типы-обёртки.
Проверить себя: http://ideone.com/BrhREq
Источник: http://java.dzone.com/articles/10-things-you-didnt-know-about
someone,
05 Ноября 2014
-
+134
- 1
- 2
- 3
- 4
{GENDER, select,
male {He}
female {She}
other {They}
https://github.com/SlexAxton/messageformat.js
someone,
29 Октября 2014
-
+121
- 1
- 2
- 3
- 4
- 5
if (Ints.contains(new int[] { 4, 5 }, statusCode / 100)) {
// error response
} else {
// success response
}
Насколько я знаю, Apache HTTP Client не содержит "официального" метода для определения категории кода состояния. Приходится так.
someone,
23 Октября 2014
-
+117
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
@Override
public void afterPersistenceInit() {
val conn = emProvider.get().unwrap(Connection.class);
try {
log.info("Transaction isolation level: {}", getLevelString(conn.getTransactionIsolation()));
} catch (final SQLException e) {
log.error("Error getting transaction isolation level", e);
}
}
private String getLevelString(final int isolationLevel) {
// Poor man's enums. Use reflection to find a constant with the given value
try {
for (val maybeLevelConstant: Connection.class.getDeclaredFields()) {
if (maybeLevelConstant.getType() == int.class && maybeLevelConstant.getName().startsWith("TRANSACTION_")
&& maybeLevelConstant.getInt(null) == isolationLevel) {
return maybeLevelConstant.getName();
}
}
} catch (final IllegalArgumentException | IllegalAccessException e) {
return "UNKNOWN";
}
return "UNKNOWN";
}
Ищем рефлексией константу с нужным значением. И всё для того, чтобы напечатать её в логе. Вот что крест животворящий отсутствие энумов в legacy API делает.
someone,
23 Октября 2014
-
+117
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
@Nullable
public static BigDecimal getWidth(final ITagSpecification spec, final TagSize size) {
switch (size) {
case S:
return spec.getSmallWidth();
case M:
return spec.getMediumWidth();
case L:
return spec.getLargeWidth();
default:
throw new AssertionError();
}
}
@Nullable
public static BigDecimal getHeight(final ITagSpecification spec, final TagSize size) {
switch (size) {
case S:
return spec.getSmallHeight();
case M:
return spec.getMediumHeight();
case L:
return spec.getLargeHeight();
default:
throw new AssertionError();
}
}
public static BigDecimal getDiameter(final ITagSpecification spec, final TagSize size) {
switch (size) {
case S:
return spec.getSmallDiameter();
case M:
return spec.getMediumDiameter();
case L:
return spec.getLargeDiameter();
default:
throw new AssertionError();
}
}
@Nullable
public static BigDecimal getWeight(final ITagSpecification spec, final TagSize size) {
switch (size) {
case S:
return spec.getSmallWeight();
case M:
return spec.getMediumWeight();
case L:
return spec.getLargeWeight();
default:
throw new AssertionError();
}
}
Бойлерплейт - он такой. А можно ли с JPA это как-то изящнее сделать? Дело в том, что {small|medium|large}{Width|Height|Diamet er|Weight} - это двенадцать столбцов таблицы в БД. Пока единственное, что приходит на ум - это сделать три одинаковых @Embedded'а на каждый размер.
someone,
19 Октября 2014
-
+119
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
static void writeInternal(byte type, Object object, ObjectOutput out) throws IOException {
out.writeByte(type);
switch (type) {
case DURATION_TYPE:
((Duration) object).writeExternal(out);
break;
case INSTANT_TYPE:
((Instant) object).writeExternal(out);
break;
...
<snip>
...
case PERIOD_TYPE:
((Period) object).writeExternal(out);
break;
default:
throw new InvalidClassException("Unknown serialized type");
}
}
JDK 8. java.time.Ser.
Вот что происходит, когда в языке есть только public-наследование. Без рефлексии короче написать нельзя.
someone,
12 Октября 2014
-
+133
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
/**
* return angle of otrezok near the center, with circle point as a second part of the otrezok
*
* @param center
* @param circlePoint
* @param len
* @return
*/
someone,
09 Октября 2014
-
+120
- 1
stopPos.updateStopPositionPortPositionWithoutRedrawingOfIt();
someone,
07 Октября 2014
-
+120
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
/* Writing: cosine = (double (*)(double)) dlsym(handle, "cos");
would seem more natural, but the C99 standard leaves
casting from "void *" to a function pointer undefined.
The assignment used below is the POSIX.1-2003 (Technical
Corrigendum 1) workaround; see the Rationale for the
POSIX specification of dlsym(). */
*(void **) (&cosine) = dlsym(handle, "cos");
Сишкопроблемы.
http://linux.die.net/man/3/dlsym
someone,
28 Сентября 2014