6767import org .xmpp .resultsetmanagement .ResultSet ;
6868import org .xmpp .resultsetmanagement .ResultSetImpl ;
6969
70+ import static java .lang .String .CASE_INSENSITIVE_ORDER ;
71+
7072/**
7173 * Provides support for Jabber Search (<a href="http://www.xmpp.org/extensions/xep-0055.html">XEP-0055</a>).
7274 * <p>
@@ -100,23 +102,22 @@ public class SearchPlugin implements Component, Plugin, PropertyEventListener {
100102
101103 private static String serverName ;
102104
103- private TreeMap <String , String > fieldLookup = new TreeMap <String , String >( new CaseInsensitiveComparator () );
105+ private TreeMap <String , String > fieldLookup = new TreeMap <>( CASE_INSENSITIVE_ORDER );
104106 private Map <String , String > reverseFieldLookup = new HashMap <String , String >();
105107
106108 /**
107109 * A list of field names that are valid in jabber:iq:search
108110 */
109- public final static Collection <String > validSearchRequestFields = new ArrayList <String >();
110- static {
111- validSearchRequestFields .add ("first" );
112- validSearchRequestFields .add ("last" );
113- validSearchRequestFields .add ("nick" );
114- validSearchRequestFields .add ("email" );
115- validSearchRequestFields .add ("x" ); // extended info
111+ public final static Collection <String > validSearchRequestFields = Arrays .asList (
112+ "first" ,
113+ "last" ,
114+ "nick" ,
115+ "email" ,
116+ "x" , // extended info
116117
117118 // result set management (XEP-0059)
118- validSearchRequestFields . add ( "set" );
119- }
119+ "set"
120+ );
120121
121122 public SearchPlugin () {
122123 serviceName = JiveGlobals .getProperty (SERVICENAME , "search" );
@@ -284,17 +285,22 @@ private IQ handleIQRequest(IQ iq) {
284285 return replyPacket ;
285286 }
286287
287- if (namespace .equals (NAMESPACE_JABBER_IQ_SEARCH )) {
288- replyPacket = handleSearchRequest (iq );
289- } else if (namespace .equals (IQDiscoInfoHandler .NAMESPACE_DISCO_INFO )) {
290- replyPacket = handleDiscoInfo (iq );
291- } else if (namespace .equals (IQDiscoItemsHandler .NAMESPACE_DISCO_ITEMS )) {
292- replyPacket = IQ .createResultIQ (iq );
293- replyPacket .setChildElement ("query" , IQDiscoItemsHandler .NAMESPACE_DISCO_ITEMS );
294- } else {
295- // don't known what to do with this.
296- replyPacket = IQ .createResultIQ (iq );
297- replyPacket .setError (Condition .feature_not_implemented );
288+ switch (namespace ) {
289+ case NAMESPACE_JABBER_IQ_SEARCH :
290+ replyPacket = handleSearchRequest (iq );
291+ break ;
292+ case IQDiscoInfoHandler .NAMESPACE_DISCO_INFO :
293+ replyPacket = handleDiscoInfo (iq );
294+ break ;
295+ case IQDiscoItemsHandler .NAMESPACE_DISCO_ITEMS :
296+ replyPacket = IQ .createResultIQ (iq );
297+ replyPacket .setChildElement ("query" , IQDiscoItemsHandler .NAMESPACE_DISCO_ITEMS );
298+ break ;
299+ default :
300+ // don't known what to do with this.
301+ replyPacket = IQ .createResultIQ (iq );
302+ replyPacket .setError (Condition .feature_not_implemented );
303+ break ;
298304 }
299305
300306 return replyPacket ;
@@ -784,19 +790,22 @@ private IQ replyNonDataFormResult(Collection<User> users, IQ packet) {
784790
785791 // return to the client the same fields that were submitted
786792 for (String field : reverseFieldLookup .keySet ()) {
787- if ("Username" .equals (field )) {
788- Element element = item .addElement (reverseFieldLookup .get (field ));
789- element .addText (username );
790- }
791-
792- if ("Name" .equals (field )) {
793- Element element = item .addElement (reverseFieldLookup .get (field ));
794- element .addText (user .isNameVisible () ? removeNull (user .getName ()) : "" );
795- }
796-
797- if ("Email" .equals (field )) {
798- Element element = item .addElement (reverseFieldLookup .get (field ));
799- element .addText (user .isEmailVisible () ? removeNull (user .getEmail ()) : "" );
793+ switch (field ) {
794+ case "Username" : {
795+ Element element = item .addElement (reverseFieldLookup .get (field ));
796+ element .addText (username );
797+ break ;
798+ }
799+ case "Name" : {
800+ Element element = item .addElement (reverseFieldLookup .get (field ));
801+ element .addText (user .isNameVisible () ? removeNull (user .getName ()) : "" );
802+ break ;
803+ }
804+ case "Email" : {
805+ Element element = item .addElement (reverseFieldLookup .get (field ));
806+ element .addText (user .isEmailVisible () ? removeNull (user .getEmail ()) : "" );
807+ break ;
808+ }
800809 }
801810 }
802811 }
@@ -843,7 +852,7 @@ public boolean getServiceEnabled() {
843852 */
844853 public void setServiceEnabled (boolean enabled ) {
845854 serviceEnabled = enabled ;
846- JiveGlobals .setProperty (SERVICEENABLED , enabled ? "true" : "false" );
855+ JiveGlobals .setProperty (SERVICEENABLED , Boolean . toString ( enabled ) );
847856 }
848857
849858 /**
@@ -897,7 +906,7 @@ public boolean isGroupOnly() {
897906 */
898907 public void setGroupOnly (boolean groupOnly ) {
899908 this .groupOnly = groupOnly ;
900- JiveGlobals .setProperty (GROUPONLY , groupOnly ? "true" : "false" );
909+ JiveGlobals .setProperty (GROUPONLY , Boolean . toString ( groupOnly ) );
901910 }
902911
903912 /*
@@ -906,14 +915,19 @@ public void setGroupOnly(boolean groupOnly) {
906915 * @see org.jivesoftware.util.PropertyEventListener#propertySet(java.lang.String, java.util.Map)
907916 */
908917 public void propertySet (String property , Map <String , Object > params ) {
909- if (property .equals (SERVICEENABLED )) {
910- this .serviceEnabled = Boolean .parseBoolean ((String ) params .get ("value" ));
911- } else if (property .equals (SERVICENAME )) {
912- changeServiceName ((String ) params .get ("value" ));
913- } else if (property .equals (EXCLUDEDFIELDS )) {
914- excludedFields = StringUtils .stringToCollection (JiveGlobals .getProperty (EXCLUDEDFIELDS , (String ) params .get ("value" )));
915- } else if (property .equals (GROUPONLY )) {
916- this .groupOnly = Boolean .parseBoolean ((String ) params .get ("value" ));
918+ switch (property ) {
919+ case SERVICEENABLED :
920+ this .serviceEnabled = Boolean .parseBoolean ((String ) params .get ("value" ));
921+ break ;
922+ case SERVICENAME :
923+ changeServiceName ((String ) params .get ("value" ));
924+ break ;
925+ case EXCLUDEDFIELDS :
926+ excludedFields = StringUtils .stringToCollection (JiveGlobals .getProperty (EXCLUDEDFIELDS , (String ) params .get ("value" )));
927+ break ;
928+ case GROUPONLY :
929+ this .groupOnly = Boolean .parseBoolean ((String ) params .get ("value" ));
930+ break ;
917931 }
918932 }
919933
@@ -923,14 +937,19 @@ public void propertySet(String property, Map<String, Object> params) {
923937 * @see org.jivesoftware.util.PropertyEventListener#propertyDeleted(java.lang.String, java.util.Map)
924938 */
925939 public void propertyDeleted (String property , Map <String , Object > params ) {
926- if (property .equals (SERVICEENABLED )) {
927- this .serviceEnabled = true ;
928- } else if (property .equals (SERVICENAME )) {
929- changeServiceName ("search" );
930- } else if (property .equals (EXCLUDEDFIELDS )) {
931- excludedFields = new ArrayList <String >();
932- } else if (property .equals (GROUPONLY )) {
933- this .groupOnly = false ;
940+ switch (property ) {
941+ case SERVICEENABLED :
942+ this .serviceEnabled = true ;
943+ break ;
944+ case SERVICENAME :
945+ changeServiceName ("search" );
946+ break ;
947+ case EXCLUDEDFIELDS :
948+ excludedFields = new ArrayList <>();
949+ break ;
950+ case GROUPONLY :
951+ this .groupOnly = false ;
952+ break ;
934953 }
935954 }
936955
@@ -977,14 +996,6 @@ private void changeServiceName(String serviceName) {
977996 this .serviceName = serviceName ;
978997 }
979998
980- /**
981- * Comparator that compares String objects, ignoring capitalization.
982- */
983- private class CaseInsensitiveComparator implements Comparator <String > {
984- public int compare (String s1 , String s2 ) {
985- return s1 .compareToIgnoreCase (s2 );
986- }
987- }
988999
9891000 /**
9901001 * Returns the trimmed argument, or an empty String object of null was supplied as an argument.
0 commit comments