Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
public int doEndTag() throws JspException {
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
try {
String fieldValue = fdata;
String boolVal="false";
StringBuffer field_Value = new StringBuffer();
String indexString="";
int spaceIndex;
int slen = fieldValue.length();
int starti=0;
int endi= fsize;
if (fdata==null) {
boolVal="true";
field_Value.append("");
}
if (fsize > slen || truncateDataSize > fdata.length() ) {
boolVal="true";
field_Value.append(fdata);
}
if (truncateDataSize!=0 && fdata.length() > truncateDataSize ) {
fieldValue="";
fieldValue = fdata.substring(starti,truncateDataSize);
slen = fieldValue.length();
}
while(boolVal=="false") {
indexString= fieldValue.substring(starti,endi);
spaceIndex = indexString.lastIndexOf(" ");
if (spaceIndex == -1) {
int initialLength = field_Value.length();
field_Value.append(fieldValue.substring(starti,endi));
// field_Value.append("<br>");
// MT-2238 start
int firstIndex = indexString.indexOf("<");
int lastIndex = indexString.indexOf(">");
if(lastIndex<firstIndex) {
lastIndex = indexString.indexOf(">",(lastIndex+1));
}
if(firstIndex >= 0 && lastIndex <= indexString.length() && lastIndex>firstIndex) {
if(!(indexString.substring(firstIndex+1,lastIndex).equalsIgnoreCase("br"))) {
if(lastIndex<=initialLength && indexString.endsWith(">")) {
field_Value.append("<br>");
}else {
field_Value.insert((initialLength+(lastIndex+1)),"<br>");
}
}
}
//in case no HTML tags
if(!checkInTag(false, field_Value.toString())
&& firstIndex==-1 && lastIndex==-1
) {
// add BR tag
field_Value.append("<br>");
}
// MT-2238 end
} else {
field_Value.append(fieldValue.substring(starti,starti + spaceIndex));
endi = starti + spaceIndex + 1;
if(forceWrap == 1){
field_Value.append("<br>");
} else{
field_Value.append(" ");
}
}
starti = endi;
if((endi + fsize) > slen) {
endi = slen - endi;
field_Value.append(fieldValue.substring(starti,starti + endi));
boolVal="true";
} else {
endi = endi + fsize;
}
}
if (truncateDataSize!=0 && fdata.length() > truncateDataSize && singleLine==false) {
field_Value.append("...");
}
if (singleLine== true ) {
if (fsize<fdata.length())
{
field_Value.delete(0,field_Value.length());
field_Value.append(fieldValue.substring(0,fsize));
field_Value.append("...");
}
}
pageContext.getOut().write(field_Value.toString());
} catch (Exception e) {
log.error(" Exception in image tag ",e);
}
return EVAL_PAGE;
}
Найдено в кастомном теге нашева прилаженийа. Писано паходу интусами %) ы
Вся соль в строке (#29):
while(boolVal=="false")
И что самое интересное.. Оно работает!! :DDD ы
А работает как я выяснил изза 'smart' части java %)) так как boolVal инитиализируется в этом же методе, то boolVal = "false" и "false" это 1 и тот же объект %) паэтаму и проходит сравнение. Т.е. java подменяет "false" во всех местах на адин и тот же объект %) но если бы "false" пришёл снаружи, то всё.. это другой объект %)
ппц, я когда увидел долго бился головой ап стенку %)) в папытках понять, почему оно работает %))
ксати я точно не уверен, но помойму если в настройках компилятора покапаться, то думаю можно сделать так чтобы каждой объявление "false" было новым объектом (или нельзя? О_о хотя ясно, что это бесмыслено), тогда работать не будит %) ы
и, да, странно, что пых считают кодомартышковским языком. Согласно последним "рейтингам", на первом месте жаба. Оказывается, на ней как плесень развивается стадо быдлокодеров, похлеще, чем на пыхе.
Так ведь boolVal же не Boolean, а String. А работает оно потому, что здесь значение "false" фигурирует в присвоении и в сравнении в виде строкового литерала. А строковые литералы автоматически интернируются компилятором, соответственно в рантайме у них будут одинаковые адреса. Как раз == проверяет равенство адресов в памяти.
йа лична так релаксируйу %))
з.ы. к таму жэ переключатсо с "рускафа" на "не руски" оч дажа палесна для моцка %)) пачти как с инасранава на радной и абратна %) ы
Allocates a Boolean object representing the value true if the string argument is not null and is equal, ignoring case, to the string "true". Otherwise, allocate a Boolean object representing the value false.
+ автобоксинг
boolVal = "true"; => boolVal = new Boolean("true"); => boolVal = true;
Но, естественно, менее говнистым сей код от этого не становится.
если в разных то ужо будут расныйэ.. ы
Запостившему - срочно усиленно учить русский язык, отложив пока программирование.
руски фасмошна йа снайу лучшэ вашефа 😉 ыы
а как писат ента личнайэ дела каштафа %) ы
йа лична так релаксируйу %))
з.ы. к таму жэ переключатсо с "рускафа" на "не руски" оч дажа палесна для моцка %)) пачти как с инасранава на радной и абратна %) ы