mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-03 18:53:43 +01:00 
			
		
		
		
	Fixed copyright for borrowed code :p
This commit is contained in:
		@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Collections;
 | 
					import java.util.Collections;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
@@ -50,6 +29,15 @@ public class CompoundTagBuilder {
 | 
				
			|||||||
        this.entries = value;
 | 
					        this.entries = value;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Create a new builder instance.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return a new builder
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static CompoundTagBuilder create() {
 | 
				
			||||||
 | 
					        return new CompoundTagBuilder();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Put the given key and tag into the compound tag.
 | 
					     * Put the given key and tag into the compound tag.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -198,13 +186,4 @@ public class CompoundTagBuilder {
 | 
				
			|||||||
        return new CompoundTag(name, new HashMap<String, Tag>(this.entries));
 | 
					        return new CompoundTag(name, new HashMap<String, Tag>(this.entries));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Create a new builder instance.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return a new builder
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static CompoundTagBuilder create() {
 | 
					 | 
				
			||||||
        return new CompoundTagBuilder();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static com.google.common.base.Preconditions.checkNotNull;
 | 
					import static com.google.common.base.Preconditions.checkNotNull;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
@@ -47,6 +26,39 @@ public class ListTagBuilder {
 | 
				
			|||||||
        this.entries = new ArrayList<Tag>();
 | 
					        this.entries = new ArrayList<Tag>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Create a new builder instance.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return a new builder
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static ListTagBuilder create(final Class<? extends Tag> type) {
 | 
				
			||||||
 | 
					        return new ListTagBuilder(type);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Create a new builder instance.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return a new builder
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static <T extends Tag> ListTagBuilder createWith(final T... entries) {
 | 
				
			||||||
 | 
					        checkNotNull(entries);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (entries.length == 0) {
 | 
				
			||||||
 | 
					            throw new IllegalArgumentException("This method needs an array of at least one entry");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final Class<? extends Tag> type = entries[0].getClass();
 | 
				
			||||||
 | 
					        for (int i = 1; i < entries.length; i++) {
 | 
				
			||||||
 | 
					            if (!type.isInstance(entries[i])) {
 | 
				
			||||||
 | 
					                throw new IllegalArgumentException("An array of different tag types was provided");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final ListTagBuilder builder = new ListTagBuilder(type);
 | 
				
			||||||
 | 
					        builder.addAll(Arrays.asList(entries));
 | 
				
			||||||
 | 
					        return builder;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Add the given tag.
 | 
					     * Add the given tag.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -95,37 +107,4 @@ public class ListTagBuilder {
 | 
				
			|||||||
        return new ListTag(name, this.type, new ArrayList<Tag>(this.entries));
 | 
					        return new ListTag(name, this.type, new ArrayList<Tag>(this.entries));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Create a new builder instance.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return a new builder
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static ListTagBuilder create(final Class<? extends Tag> type) {
 | 
					 | 
				
			||||||
        return new ListTagBuilder(type);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Create a new builder instance.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return a new builder
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static <T extends Tag> ListTagBuilder createWith(final T... entries) {
 | 
					 | 
				
			||||||
        checkNotNull(entries);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (entries.length == 0) {
 | 
					 | 
				
			||||||
            throw new IllegalArgumentException("This method needs an array of at least one entry");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        final Class<? extends Tag> type = entries[0].getClass();
 | 
					 | 
				
			||||||
        for (int i = 1; i < entries.length; i++) {
 | 
					 | 
				
			||||||
            if (!type.isInstance(entries[i])) {
 | 
					 | 
				
			||||||
                throw new IllegalArgumentException("An array of different tag types was provided");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        final ListTagBuilder builder = new ListTagBuilder(type);
 | 
					 | 
				
			||||||
        builder.addAll(Arrays.asList(entries));
 | 
					 | 
				
			||||||
        return builder;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.Closeable;
 | 
					import java.io.Closeable;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static com.google.common.base.Preconditions.checkNotNull;
 | 
					import static com.google.common.base.Preconditions.checkNotNull;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.jnbt;
 | 
					package com.intellectualcrafters.jnbt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.bukkit.World;
 | 
					import org.bukkit.World;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Iterator;
 | 
					import java.util.Iterator;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Iterator;
 | 
					import java.util.Iterator;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
@@ -82,52 +61,6 @@ import java.util.Map.Entry;
 | 
				
			|||||||
 * @version 2014-05-03
 | 
					 * @version 2014-05-03
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class JSONObject {
 | 
					public class JSONObject {
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * JSONObject.NULL is equivalent to the value that JavaScript calls null,
 | 
					 | 
				
			||||||
     * whilst Java's null is equivalent to the value that JavaScript calls
 | 
					 | 
				
			||||||
     * undefined.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private static final class Null {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * There is only intended to be a single instance of the NULL object,
 | 
					 | 
				
			||||||
         * so the clone method returns itself.
 | 
					 | 
				
			||||||
         *
 | 
					 | 
				
			||||||
         * @return NULL.
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        @Override
 | 
					 | 
				
			||||||
        protected final Object clone() {
 | 
					 | 
				
			||||||
            return this;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * A Null object is equal to the null value and to itself.
 | 
					 | 
				
			||||||
         *
 | 
					 | 
				
			||||||
         * @param object An object to test for nullness.
 | 
					 | 
				
			||||||
         * @return true if the object parameter is the JSONObject.NULL object or
 | 
					 | 
				
			||||||
         * null.
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        @Override
 | 
					 | 
				
			||||||
        public boolean equals(final Object object) {
 | 
					 | 
				
			||||||
            return (object == null) || (object == this);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * Get the "null" string value.
 | 
					 | 
				
			||||||
         *
 | 
					 | 
				
			||||||
         * @return The string "null".
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        @Override
 | 
					 | 
				
			||||||
        public String toString() {
 | 
					 | 
				
			||||||
            return "null";
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * The map where the JSONObject's properties are kept.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private final Map<String, Object> map;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * It is sometimes more convenient and less ambiguous to have a
 | 
					     * It is sometimes more convenient and less ambiguous to have a
 | 
				
			||||||
     * <code>NULL</code> object than to use Java's <code>null</code> value.
 | 
					     * <code>NULL</code> object than to use Java's <code>null</code> value.
 | 
				
			||||||
@@ -135,6 +68,10 @@ public class JSONObject {
 | 
				
			|||||||
     * <code>JSONObject.NULL.toString()</code> returns <code>"null"</code>.
 | 
					     * <code>JSONObject.NULL.toString()</code> returns <code>"null"</code>.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static final Object NULL = new Null();
 | 
					    public static final Object NULL = new Null();
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The map where the JSONObject's properties are kept.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private final Map<String, Object> map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Construct an empty JSONObject.
 | 
					     * Construct an empty JSONObject.
 | 
				
			||||||
@@ -341,6 +278,384 @@ public class JSONObject {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Produce a string from a double. The string "null" will be returned if the
 | 
				
			||||||
 | 
					     * number is not finite.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param d A double.
 | 
				
			||||||
 | 
					     * @return A String.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String doubleToString(final double d) {
 | 
				
			||||||
 | 
					        if (Double.isInfinite(d) || Double.isNaN(d)) {
 | 
				
			||||||
 | 
					            return "null";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Shave off trailing zeros and decimal point, if possible.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String string = Double.toString(d);
 | 
				
			||||||
 | 
					        if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) {
 | 
				
			||||||
 | 
					            while (string.endsWith("0")) {
 | 
				
			||||||
 | 
					                string = string.substring(0, string.length() - 1);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (string.endsWith(".")) {
 | 
				
			||||||
 | 
					                string = string.substring(0, string.length() - 1);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return string;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get an array of field names from a JSONObject.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return An array of field names, or null if there are no names.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String[] getNames(final JSONObject jo) {
 | 
				
			||||||
 | 
					        final int length = jo.length();
 | 
				
			||||||
 | 
					        if (length == 0) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        final Iterator<String> iterator = jo.keys();
 | 
				
			||||||
 | 
					        final String[] names = new String[length];
 | 
				
			||||||
 | 
					        int i = 0;
 | 
				
			||||||
 | 
					        while (iterator.hasNext()) {
 | 
				
			||||||
 | 
					            names[i] = iterator.next();
 | 
				
			||||||
 | 
					            i += 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return names;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get an array of field names from an Object.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return An array of field names, or null if there are no names.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String[] getNames(final Object object) {
 | 
				
			||||||
 | 
					        if (object == null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        final Class klass = object.getClass();
 | 
				
			||||||
 | 
					        final Field[] fields = klass.getFields();
 | 
				
			||||||
 | 
					        final int length = fields.length;
 | 
				
			||||||
 | 
					        if (length == 0) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        final String[] names = new String[length];
 | 
				
			||||||
 | 
					        for (int i = 0; i < length; i += 1) {
 | 
				
			||||||
 | 
					            names[i] = fields[i].getName();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return names;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Produce a string from a Number.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param number A Number
 | 
				
			||||||
 | 
					     * @return A String.
 | 
				
			||||||
 | 
					     * @throws JSONException If n is a non-finite number.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String numberToString(final Number number) throws JSONException {
 | 
				
			||||||
 | 
					        if (number == null) {
 | 
				
			||||||
 | 
					            throw new JSONException("Null pointer");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        testValidity(number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Shave off trailing zeros and decimal point, if possible.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String string = number.toString();
 | 
				
			||||||
 | 
					        if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) {
 | 
				
			||||||
 | 
					            while (string.endsWith("0")) {
 | 
				
			||||||
 | 
					                string = string.substring(0, string.length() - 1);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (string.endsWith(".")) {
 | 
				
			||||||
 | 
					                string = string.substring(0, string.length() - 1);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return string;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Produce a string in double quotes with backslash sequences in all the
 | 
				
			||||||
 | 
					     * right places. A backslash will be inserted within </, producing <\/,
 | 
				
			||||||
 | 
					     * allowing JSON text to be delivered in HTML. In JSON text, a string cannot
 | 
				
			||||||
 | 
					     * contain a control character or an unescaped quote or backslash.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string A String
 | 
				
			||||||
 | 
					     * @return A String correctly formatted for insertion in a JSON text.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String quote(final String string) {
 | 
				
			||||||
 | 
					        final StringWriter sw = new StringWriter();
 | 
				
			||||||
 | 
					        synchronized (sw.getBuffer()) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                return quote(string, sw).toString();
 | 
				
			||||||
 | 
					            } catch (final IOException ignored) {
 | 
				
			||||||
 | 
					                // will never happen - we are writing to a string writer
 | 
				
			||||||
 | 
					                return "";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Writer quote(final String string, final Writer w) throws IOException {
 | 
				
			||||||
 | 
					        if ((string == null) || (string.length() == 0)) {
 | 
				
			||||||
 | 
					            w.write("\"\"");
 | 
				
			||||||
 | 
					            return w;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        char b;
 | 
				
			||||||
 | 
					        char c = 0;
 | 
				
			||||||
 | 
					        String hhhh;
 | 
				
			||||||
 | 
					        int i;
 | 
				
			||||||
 | 
					        final int len = string.length();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        w.write('"');
 | 
				
			||||||
 | 
					        for (i = 0; i < len; i += 1) {
 | 
				
			||||||
 | 
					            b = c;
 | 
				
			||||||
 | 
					            c = string.charAt(i);
 | 
				
			||||||
 | 
					            switch (c) {
 | 
				
			||||||
 | 
					                case '\\':
 | 
				
			||||||
 | 
					                case '"':
 | 
				
			||||||
 | 
					                    w.write('\\');
 | 
				
			||||||
 | 
					                    w.write(c);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case '/':
 | 
				
			||||||
 | 
					                    if (b == '<') {
 | 
				
			||||||
 | 
					                        w.write('\\');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    w.write(c);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case '\b':
 | 
				
			||||||
 | 
					                    w.write("\\b");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case '\t':
 | 
				
			||||||
 | 
					                    w.write("\\t");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case '\n':
 | 
				
			||||||
 | 
					                    w.write("\\n");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case '\f':
 | 
				
			||||||
 | 
					                    w.write("\\f");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case '\r':
 | 
				
			||||||
 | 
					                    w.write("\\r");
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    if ((c < ' ') || ((c >= '\u0080') && (c < '\u00a0')) || ((c >= '\u2000') && (c < '\u2100'))) {
 | 
				
			||||||
 | 
					                        w.write("\\u");
 | 
				
			||||||
 | 
					                        hhhh = Integer.toHexString(c);
 | 
				
			||||||
 | 
					                        w.write("0000", 0, 4 - hhhh.length());
 | 
				
			||||||
 | 
					                        w.write(hhhh);
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        w.write(c);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        w.write('"');
 | 
				
			||||||
 | 
					        return w;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Try to convert a string into a number, boolean, or null. If the string
 | 
				
			||||||
 | 
					     * can't be converted, return the string.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string A String.
 | 
				
			||||||
 | 
					     * @return A simple JSON value.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Object stringToValue(final String string) {
 | 
				
			||||||
 | 
					        Double d;
 | 
				
			||||||
 | 
					        if (string.equals("")) {
 | 
				
			||||||
 | 
					            return string;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (string.equalsIgnoreCase("true")) {
 | 
				
			||||||
 | 
					            return Boolean.TRUE;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (string.equalsIgnoreCase("false")) {
 | 
				
			||||||
 | 
					            return Boolean.FALSE;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (string.equalsIgnoreCase("null")) {
 | 
				
			||||||
 | 
					            return JSONObject.NULL;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /*
 | 
				
			||||||
 | 
					         * If it might be a number, try converting it. If a number cannot be
 | 
				
			||||||
 | 
					         * produced, then the value will just be a string.
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final char b = string.charAt(0);
 | 
				
			||||||
 | 
					        if (((b >= '0') && (b <= '9')) || (b == '-')) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                if ((string.indexOf('.') > -1) || (string.indexOf('e') > -1) || (string.indexOf('E') > -1)) {
 | 
				
			||||||
 | 
					                    d = Double.valueOf(string);
 | 
				
			||||||
 | 
					                    if (!d.isInfinite() && !d.isNaN()) {
 | 
				
			||||||
 | 
					                        return d;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    final Long myLong = new Long(string);
 | 
				
			||||||
 | 
					                    if (string.equals(myLong.toString())) {
 | 
				
			||||||
 | 
					                        if (myLong == myLong.intValue()) {
 | 
				
			||||||
 | 
					                            return myLong.intValue();
 | 
				
			||||||
 | 
					                        } else {
 | 
				
			||||||
 | 
					                            return myLong;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } catch (final Exception ignore) {
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return string;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Throw an exception if the object is a NaN or infinite number.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param o The object to test.
 | 
				
			||||||
 | 
					     * @throws JSONException If o is a non-finite number.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static void testValidity(final Object o) throws JSONException {
 | 
				
			||||||
 | 
					        if (o != null) {
 | 
				
			||||||
 | 
					            if (o instanceof Double) {
 | 
				
			||||||
 | 
					                if (((Double) o).isInfinite() || ((Double) o).isNaN()) {
 | 
				
			||||||
 | 
					                    throw new JSONException("JSON does not allow non-finite numbers.");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else if (o instanceof Float) {
 | 
				
			||||||
 | 
					                if (((Float) o).isInfinite() || ((Float) o).isNaN()) {
 | 
				
			||||||
 | 
					                    throw new JSONException("JSON does not allow non-finite numbers.");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Make a JSON text of an Object value. If the object has an
 | 
				
			||||||
 | 
					     * value.toJSONString() method, then that method will be used to produce the
 | 
				
			||||||
 | 
					     * JSON text. The method is required to produce a strictly conforming text.
 | 
				
			||||||
 | 
					     * If the object does not contain a toJSONString method (which is the most
 | 
				
			||||||
 | 
					     * common case), then a text will be produced by other means. If the value
 | 
				
			||||||
 | 
					     * is an array or Collection, then a JSONArray will be made from it and its
 | 
				
			||||||
 | 
					     * toJSONString method will be called. If the value is a MAP, then a
 | 
				
			||||||
 | 
					     * JSONObject will be made from it and its toJSONString method will be
 | 
				
			||||||
 | 
					     * called. Otherwise, the value's toString method will be called, and the
 | 
				
			||||||
 | 
					     * result will be quoted.
 | 
				
			||||||
 | 
					     * <p/>
 | 
				
			||||||
 | 
					     * <p/>
 | 
				
			||||||
 | 
					     * Warning: This method assumes that the data structure is acyclical.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param value The value to be serialized.
 | 
				
			||||||
 | 
					     * @return a printable, displayable, transmittable representation of the
 | 
				
			||||||
 | 
					     * object, beginning with <code>{</code> <small>(left
 | 
				
			||||||
 | 
					     * brace)</small> and ending with <code>}</code> <small>(right
 | 
				
			||||||
 | 
					     * brace)</small>.
 | 
				
			||||||
 | 
					     * @throws JSONException If the value is or contains an invalid number.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String valueToString(final Object value) throws JSONException {
 | 
				
			||||||
 | 
					        if ((value == null) || value.equals(null)) {
 | 
				
			||||||
 | 
					            return "null";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (value instanceof JSONString) {
 | 
				
			||||||
 | 
					            Object object;
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                object = ((JSONString) value).toJSONString();
 | 
				
			||||||
 | 
					            } catch (final Exception e) {
 | 
				
			||||||
 | 
					                throw new JSONException(e);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (object instanceof String) {
 | 
				
			||||||
 | 
					                return (String) object;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            throw new JSONException("Bad value from toJSONString: " + object);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (value instanceof Number) {
 | 
				
			||||||
 | 
					            return numberToString((Number) value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((value instanceof Boolean) || (value instanceof JSONObject) || (value instanceof JSONArray)) {
 | 
				
			||||||
 | 
					            return value.toString();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (value instanceof Map) {
 | 
				
			||||||
 | 
					            return new JSONObject((Map<String, Object>) value).toString();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (value instanceof Collection) {
 | 
				
			||||||
 | 
					            return new JSONArray((Collection<Object>) value).toString();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (value.getClass().isArray()) {
 | 
				
			||||||
 | 
					            return new JSONArray(value).toString();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return quote(value.toString());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Wrap an object, if necessary. If the object is null, return the NULL
 | 
				
			||||||
 | 
					     * object. If it is an array or collection, wrap it in a JSONArray. If it is
 | 
				
			||||||
 | 
					     * a map, wrap it in a JSONObject. If it is a standard property (Double,
 | 
				
			||||||
 | 
					     * String, et al) then it is already wrapped. Otherwise, if it comes from
 | 
				
			||||||
 | 
					     * one of the java packages, turn it into a string. And if it doesn't, try
 | 
				
			||||||
 | 
					     * to wrap it in a JSONObject. If the wrapping fails, then null is returned.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param object The object to wrap
 | 
				
			||||||
 | 
					     * @return The wrapped value
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static Object wrap(final Object object) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            if (object == null) {
 | 
				
			||||||
 | 
					                return NULL;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if ((object instanceof JSONObject) || (object instanceof JSONArray) || NULL.equals(object) || (object instanceof JSONString) || (object instanceof Byte) || (object instanceof Character) || (object instanceof Short) || (object instanceof Integer) || (object instanceof Long) || (object instanceof Boolean) || (object instanceof Float) || (object instanceof Double) || (object instanceof String)) {
 | 
				
			||||||
 | 
					                return object;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (object instanceof Collection) {
 | 
				
			||||||
 | 
					                return new JSONArray((Collection<Object>) object);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (object.getClass().isArray()) {
 | 
				
			||||||
 | 
					                return new JSONArray(object);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (object instanceof Map) {
 | 
				
			||||||
 | 
					                return new JSONObject((Map<String, Object>) object);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            final Package objectPackage = object.getClass().getPackage();
 | 
				
			||||||
 | 
					            final String objectPackageName = objectPackage != null ? objectPackage.getName() : "";
 | 
				
			||||||
 | 
					            if (objectPackageName.startsWith("java.") || objectPackageName.startsWith("javax.") || (object.getClass().getClassLoader() == null)) {
 | 
				
			||||||
 | 
					                return object.toString();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return new JSONObject(object);
 | 
				
			||||||
 | 
					        } catch (final Exception exception) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static final Writer writeValue(final Writer writer, final Object value, final int indentFactor, final int indent) throws JSONException, IOException {
 | 
				
			||||||
 | 
					        if ((value == null) || value.equals(null)) {
 | 
				
			||||||
 | 
					            writer.write("null");
 | 
				
			||||||
 | 
					        } else if (value instanceof JSONObject) {
 | 
				
			||||||
 | 
					            ((JSONObject) value).write(writer, indentFactor, indent);
 | 
				
			||||||
 | 
					        } else if (value instanceof JSONArray) {
 | 
				
			||||||
 | 
					            ((JSONArray) value).write(writer, indentFactor, indent);
 | 
				
			||||||
 | 
					        } else if (value instanceof Map) {
 | 
				
			||||||
 | 
					            new JSONObject((Map<String, Object>) value).write(writer, indentFactor, indent);
 | 
				
			||||||
 | 
					        } else if (value instanceof Collection) {
 | 
				
			||||||
 | 
					            new JSONArray((Collection<Object>) value).write(writer, indentFactor, indent);
 | 
				
			||||||
 | 
					        } else if (value.getClass().isArray()) {
 | 
				
			||||||
 | 
					            new JSONArray(value).write(writer, indentFactor, indent);
 | 
				
			||||||
 | 
					        } else if (value instanceof Number) {
 | 
				
			||||||
 | 
					            writer.write(numberToString((Number) value));
 | 
				
			||||||
 | 
					        } else if (value instanceof Boolean) {
 | 
				
			||||||
 | 
					            writer.write(value.toString());
 | 
				
			||||||
 | 
					        } else if (value instanceof JSONString) {
 | 
				
			||||||
 | 
					            Object o;
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                o = ((JSONString) value).toJSONString();
 | 
				
			||||||
 | 
					            } catch (final Exception e) {
 | 
				
			||||||
 | 
					                throw new JSONException(e);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            writer.write(o != null ? o.toString() : quote(value.toString()));
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            quote(value.toString(), writer);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return writer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static final void indent(final Writer writer, final int indent) throws IOException {
 | 
				
			||||||
 | 
					        for (int i = 0; i < indent; i += 1) {
 | 
				
			||||||
 | 
					            writer.write(' ');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Accumulate values under a key. It is similar to the put method except
 | 
					     * Accumulate values under a key. It is similar to the put method except
 | 
				
			||||||
     * that if there is already an object stored under the key then a JSONArray
 | 
					     * that if there is already an object stored under the key then a JSONArray
 | 
				
			||||||
@@ -395,32 +710,6 @@ public class JSONObject {
 | 
				
			|||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Produce a string from a double. The string "null" will be returned if the
 | 
					 | 
				
			||||||
     * number is not finite.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param d A double.
 | 
					 | 
				
			||||||
     * @return A String.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static String doubleToString(final double d) {
 | 
					 | 
				
			||||||
        if (Double.isInfinite(d) || Double.isNaN(d)) {
 | 
					 | 
				
			||||||
            return "null";
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Shave off trailing zeros and decimal point, if possible.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        String string = Double.toString(d);
 | 
					 | 
				
			||||||
        if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) {
 | 
					 | 
				
			||||||
            while (string.endsWith("0")) {
 | 
					 | 
				
			||||||
                string = string.substring(0, string.length() - 1);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (string.endsWith(".")) {
 | 
					 | 
				
			||||||
                string = string.substring(0, string.length() - 1);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return string;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get the value object associated with a key.
 | 
					     * Get the value object associated with a key.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -538,48 +827,6 @@ public class JSONObject {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Get an array of field names from a JSONObject.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return An array of field names, or null if there are no names.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static String[] getNames(final JSONObject jo) {
 | 
					 | 
				
			||||||
        final int length = jo.length();
 | 
					 | 
				
			||||||
        if (length == 0) {
 | 
					 | 
				
			||||||
            return null;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        final Iterator<String> iterator = jo.keys();
 | 
					 | 
				
			||||||
        final String[] names = new String[length];
 | 
					 | 
				
			||||||
        int i = 0;
 | 
					 | 
				
			||||||
        while (iterator.hasNext()) {
 | 
					 | 
				
			||||||
            names[i] = iterator.next();
 | 
					 | 
				
			||||||
            i += 1;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return names;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Get an array of field names from an Object.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return An array of field names, or null if there are no names.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static String[] getNames(final Object object) {
 | 
					 | 
				
			||||||
        if (object == null) {
 | 
					 | 
				
			||||||
            return null;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        final Class klass = object.getClass();
 | 
					 | 
				
			||||||
        final Field[] fields = klass.getFields();
 | 
					 | 
				
			||||||
        final int length = fields.length;
 | 
					 | 
				
			||||||
        if (length == 0) {
 | 
					 | 
				
			||||||
            return null;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        final String[] names = new String[length];
 | 
					 | 
				
			||||||
        for (int i = 0; i < length; i += 1) {
 | 
					 | 
				
			||||||
            names[i] = fields[i].getName();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return names;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get the string associated with a key.
 | 
					     * Get the string associated with a key.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -688,33 +935,6 @@ public class JSONObject {
 | 
				
			|||||||
        return ja.length() == 0 ? null : ja;
 | 
					        return ja.length() == 0 ? null : ja;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Produce a string from a Number.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param number A Number
 | 
					 | 
				
			||||||
     * @return A String.
 | 
					 | 
				
			||||||
     * @throws JSONException If n is a non-finite number.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static String numberToString(final Number number) throws JSONException {
 | 
					 | 
				
			||||||
        if (number == null) {
 | 
					 | 
				
			||||||
            throw new JSONException("Null pointer");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        testValidity(number);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Shave off trailing zeros and decimal point, if possible.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        String string = number.toString();
 | 
					 | 
				
			||||||
        if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) {
 | 
					 | 
				
			||||||
            while (string.endsWith("0")) {
 | 
					 | 
				
			||||||
                string = string.substring(0, string.length() - 1);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (string.endsWith(".")) {
 | 
					 | 
				
			||||||
                string = string.substring(0, string.length() - 1);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return string;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get an optional value associated with a key.
 | 
					     * Get an optional value associated with a key.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -1071,85 +1291,6 @@ public class JSONObject {
 | 
				
			|||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Produce a string in double quotes with backslash sequences in all the
 | 
					 | 
				
			||||||
     * right places. A backslash will be inserted within </, producing <\/,
 | 
					 | 
				
			||||||
     * allowing JSON text to be delivered in HTML. In JSON text, a string cannot
 | 
					 | 
				
			||||||
     * contain a control character or an unescaped quote or backslash.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param string A String
 | 
					 | 
				
			||||||
     * @return A String correctly formatted for insertion in a JSON text.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static String quote(final String string) {
 | 
					 | 
				
			||||||
        final StringWriter sw = new StringWriter();
 | 
					 | 
				
			||||||
        synchronized (sw.getBuffer()) {
 | 
					 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                return quote(string, sw).toString();
 | 
					 | 
				
			||||||
            } catch (final IOException ignored) {
 | 
					 | 
				
			||||||
                // will never happen - we are writing to a string writer
 | 
					 | 
				
			||||||
                return "";
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static Writer quote(final String string, final Writer w) throws IOException {
 | 
					 | 
				
			||||||
        if ((string == null) || (string.length() == 0)) {
 | 
					 | 
				
			||||||
            w.write("\"\"");
 | 
					 | 
				
			||||||
            return w;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        char b;
 | 
					 | 
				
			||||||
        char c = 0;
 | 
					 | 
				
			||||||
        String hhhh;
 | 
					 | 
				
			||||||
        int i;
 | 
					 | 
				
			||||||
        final int len = string.length();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        w.write('"');
 | 
					 | 
				
			||||||
        for (i = 0; i < len; i += 1) {
 | 
					 | 
				
			||||||
            b = c;
 | 
					 | 
				
			||||||
            c = string.charAt(i);
 | 
					 | 
				
			||||||
            switch (c) {
 | 
					 | 
				
			||||||
                case '\\':
 | 
					 | 
				
			||||||
                case '"':
 | 
					 | 
				
			||||||
                    w.write('\\');
 | 
					 | 
				
			||||||
                    w.write(c);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case '/':
 | 
					 | 
				
			||||||
                    if (b == '<') {
 | 
					 | 
				
			||||||
                        w.write('\\');
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    w.write(c);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case '\b':
 | 
					 | 
				
			||||||
                    w.write("\\b");
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case '\t':
 | 
					 | 
				
			||||||
                    w.write("\\t");
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case '\n':
 | 
					 | 
				
			||||||
                    w.write("\\n");
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case '\f':
 | 
					 | 
				
			||||||
                    w.write("\\f");
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case '\r':
 | 
					 | 
				
			||||||
                    w.write("\\r");
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                default:
 | 
					 | 
				
			||||||
                    if ((c < ' ') || ((c >= '\u0080') && (c < '\u00a0')) || ((c >= '\u2000') && (c < '\u2100'))) {
 | 
					 | 
				
			||||||
                        w.write("\\u");
 | 
					 | 
				
			||||||
                        hhhh = Integer.toHexString(c);
 | 
					 | 
				
			||||||
                        w.write("0000", 0, 4 - hhhh.length());
 | 
					 | 
				
			||||||
                        w.write(hhhh);
 | 
					 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        w.write(c);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        w.write('"');
 | 
					 | 
				
			||||||
        return w;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Remove a name and its value, if present.
 | 
					     * Remove a name and its value, if present.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -1201,77 +1342,6 @@ public class JSONObject {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Try to convert a string into a number, boolean, or null. If the string
 | 
					 | 
				
			||||||
     * can't be converted, return the string.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param string A String.
 | 
					 | 
				
			||||||
     * @return A simple JSON value.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static Object stringToValue(final String string) {
 | 
					 | 
				
			||||||
        Double d;
 | 
					 | 
				
			||||||
        if (string.equals("")) {
 | 
					 | 
				
			||||||
            return string;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (string.equalsIgnoreCase("true")) {
 | 
					 | 
				
			||||||
            return Boolean.TRUE;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (string.equalsIgnoreCase("false")) {
 | 
					 | 
				
			||||||
            return Boolean.FALSE;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (string.equalsIgnoreCase("null")) {
 | 
					 | 
				
			||||||
            return JSONObject.NULL;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /*
 | 
					 | 
				
			||||||
         * If it might be a number, try converting it. If a number cannot be
 | 
					 | 
				
			||||||
         * produced, then the value will just be a string.
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        final char b = string.charAt(0);
 | 
					 | 
				
			||||||
        if (((b >= '0') && (b <= '9')) || (b == '-')) {
 | 
					 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                if ((string.indexOf('.') > -1) || (string.indexOf('e') > -1) || (string.indexOf('E') > -1)) {
 | 
					 | 
				
			||||||
                    d = Double.valueOf(string);
 | 
					 | 
				
			||||||
                    if (!d.isInfinite() && !d.isNaN()) {
 | 
					 | 
				
			||||||
                        return d;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    final Long myLong = new Long(string);
 | 
					 | 
				
			||||||
                    if (string.equals(myLong.toString())) {
 | 
					 | 
				
			||||||
                        if (myLong == myLong.intValue()) {
 | 
					 | 
				
			||||||
                            return myLong.intValue();
 | 
					 | 
				
			||||||
                        } else {
 | 
					 | 
				
			||||||
                            return myLong;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            } catch (final Exception ignore) {
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return string;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Throw an exception if the object is a NaN or infinite number.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param o The object to test.
 | 
					 | 
				
			||||||
     * @throws JSONException If o is a non-finite number.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static void testValidity(final Object o) throws JSONException {
 | 
					 | 
				
			||||||
        if (o != null) {
 | 
					 | 
				
			||||||
            if (o instanceof Double) {
 | 
					 | 
				
			||||||
                if (((Double) o).isInfinite() || ((Double) o).isNaN()) {
 | 
					 | 
				
			||||||
                    throw new JSONException("JSON does not allow non-finite numbers.");
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            } else if (o instanceof Float) {
 | 
					 | 
				
			||||||
                if (((Float) o).isInfinite() || ((Float) o).isNaN()) {
 | 
					 | 
				
			||||||
                    throw new JSONException("JSON does not allow non-finite numbers.");
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Produce a JSONArray containing the values of the members of this
 | 
					     * Produce a JSONArray containing the values of the members of this
 | 
				
			||||||
     * JSONObject.
 | 
					     * JSONObject.
 | 
				
			||||||
@@ -1332,102 +1402,6 @@ public class JSONObject {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Make a JSON text of an Object value. If the object has an
 | 
					 | 
				
			||||||
     * value.toJSONString() method, then that method will be used to produce the
 | 
					 | 
				
			||||||
     * JSON text. The method is required to produce a strictly conforming text.
 | 
					 | 
				
			||||||
     * If the object does not contain a toJSONString method (which is the most
 | 
					 | 
				
			||||||
     * common case), then a text will be produced by other means. If the value
 | 
					 | 
				
			||||||
     * is an array or Collection, then a JSONArray will be made from it and its
 | 
					 | 
				
			||||||
     * toJSONString method will be called. If the value is a MAP, then a
 | 
					 | 
				
			||||||
     * JSONObject will be made from it and its toJSONString method will be
 | 
					 | 
				
			||||||
     * called. Otherwise, the value's toString method will be called, and the
 | 
					 | 
				
			||||||
     * result will be quoted.
 | 
					 | 
				
			||||||
     * <p/>
 | 
					 | 
				
			||||||
     * <p/>
 | 
					 | 
				
			||||||
     * Warning: This method assumes that the data structure is acyclical.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param value The value to be serialized.
 | 
					 | 
				
			||||||
     * @return a printable, displayable, transmittable representation of the
 | 
					 | 
				
			||||||
     * object, beginning with <code>{</code> <small>(left
 | 
					 | 
				
			||||||
     * brace)</small> and ending with <code>}</code> <small>(right
 | 
					 | 
				
			||||||
     * brace)</small>.
 | 
					 | 
				
			||||||
     * @throws JSONException If the value is or contains an invalid number.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static String valueToString(final Object value) throws JSONException {
 | 
					 | 
				
			||||||
        if ((value == null) || value.equals(null)) {
 | 
					 | 
				
			||||||
            return "null";
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (value instanceof JSONString) {
 | 
					 | 
				
			||||||
            Object object;
 | 
					 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                object = ((JSONString) value).toJSONString();
 | 
					 | 
				
			||||||
            } catch (final Exception e) {
 | 
					 | 
				
			||||||
                throw new JSONException(e);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (object instanceof String) {
 | 
					 | 
				
			||||||
                return (String) object;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            throw new JSONException("Bad value from toJSONString: " + object);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (value instanceof Number) {
 | 
					 | 
				
			||||||
            return numberToString((Number) value);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if ((value instanceof Boolean) || (value instanceof JSONObject) || (value instanceof JSONArray)) {
 | 
					 | 
				
			||||||
            return value.toString();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (value instanceof Map) {
 | 
					 | 
				
			||||||
            return new JSONObject((Map<String, Object>) value).toString();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (value instanceof Collection) {
 | 
					 | 
				
			||||||
            return new JSONArray((Collection<Object>) value).toString();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (value.getClass().isArray()) {
 | 
					 | 
				
			||||||
            return new JSONArray(value).toString();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return quote(value.toString());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Wrap an object, if necessary. If the object is null, return the NULL
 | 
					 | 
				
			||||||
     * object. If it is an array or collection, wrap it in a JSONArray. If it is
 | 
					 | 
				
			||||||
     * a map, wrap it in a JSONObject. If it is a standard property (Double,
 | 
					 | 
				
			||||||
     * String, et al) then it is already wrapped. Otherwise, if it comes from
 | 
					 | 
				
			||||||
     * one of the java packages, turn it into a string. And if it doesn't, try
 | 
					 | 
				
			||||||
     * to wrap it in a JSONObject. If the wrapping fails, then null is returned.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param object The object to wrap
 | 
					 | 
				
			||||||
     * @return The wrapped value
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static Object wrap(final Object object) {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            if (object == null) {
 | 
					 | 
				
			||||||
                return NULL;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if ((object instanceof JSONObject) || (object instanceof JSONArray) || NULL.equals(object) || (object instanceof JSONString) || (object instanceof Byte) || (object instanceof Character) || (object instanceof Short) || (object instanceof Integer) || (object instanceof Long) || (object instanceof Boolean) || (object instanceof Float) || (object instanceof Double) || (object instanceof String)) {
 | 
					 | 
				
			||||||
                return object;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (object instanceof Collection) {
 | 
					 | 
				
			||||||
                return new JSONArray((Collection<Object>) object);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (object.getClass().isArray()) {
 | 
					 | 
				
			||||||
                return new JSONArray(object);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (object instanceof Map) {
 | 
					 | 
				
			||||||
                return new JSONObject((Map<String, Object>) object);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            final Package objectPackage = object.getClass().getPackage();
 | 
					 | 
				
			||||||
            final String objectPackageName = objectPackage != null ? objectPackage.getName() : "";
 | 
					 | 
				
			||||||
            if (objectPackageName.startsWith("java.") || objectPackageName.startsWith("javax.") || (object.getClass().getClassLoader() == null)) {
 | 
					 | 
				
			||||||
                return object.toString();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return new JSONObject(object);
 | 
					 | 
				
			||||||
        } catch (final Exception exception) {
 | 
					 | 
				
			||||||
            return null;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Write the contents of the JSONObject as JSON text to a writer. For
 | 
					     * Write the contents of the JSONObject as JSON text to a writer. For
 | 
				
			||||||
     * compactness, no whitespace is added.
 | 
					     * compactness, no whitespace is added.
 | 
				
			||||||
@@ -1441,43 +1415,6 @@ public class JSONObject {
 | 
				
			|||||||
        return this.write(writer, 0, 0);
 | 
					        return this.write(writer, 0, 0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static final Writer writeValue(final Writer writer, final Object value, final int indentFactor, final int indent) throws JSONException, IOException {
 | 
					 | 
				
			||||||
        if ((value == null) || value.equals(null)) {
 | 
					 | 
				
			||||||
            writer.write("null");
 | 
					 | 
				
			||||||
        } else if (value instanceof JSONObject) {
 | 
					 | 
				
			||||||
            ((JSONObject) value).write(writer, indentFactor, indent);
 | 
					 | 
				
			||||||
        } else if (value instanceof JSONArray) {
 | 
					 | 
				
			||||||
            ((JSONArray) value).write(writer, indentFactor, indent);
 | 
					 | 
				
			||||||
        } else if (value instanceof Map) {
 | 
					 | 
				
			||||||
            new JSONObject((Map<String, Object>) value).write(writer, indentFactor, indent);
 | 
					 | 
				
			||||||
        } else if (value instanceof Collection) {
 | 
					 | 
				
			||||||
            new JSONArray((Collection<Object>) value).write(writer, indentFactor, indent);
 | 
					 | 
				
			||||||
        } else if (value.getClass().isArray()) {
 | 
					 | 
				
			||||||
            new JSONArray(value).write(writer, indentFactor, indent);
 | 
					 | 
				
			||||||
        } else if (value instanceof Number) {
 | 
					 | 
				
			||||||
            writer.write(numberToString((Number) value));
 | 
					 | 
				
			||||||
        } else if (value instanceof Boolean) {
 | 
					 | 
				
			||||||
            writer.write(value.toString());
 | 
					 | 
				
			||||||
        } else if (value instanceof JSONString) {
 | 
					 | 
				
			||||||
            Object o;
 | 
					 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                o = ((JSONString) value).toJSONString();
 | 
					 | 
				
			||||||
            } catch (final Exception e) {
 | 
					 | 
				
			||||||
                throw new JSONException(e);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            writer.write(o != null ? o.toString() : quote(value.toString()));
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            quote(value.toString(), writer);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return writer;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static final void indent(final Writer writer, final int indent) throws IOException {
 | 
					 | 
				
			||||||
        for (int i = 0; i < indent; i += 1) {
 | 
					 | 
				
			||||||
            writer.write(' ');
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Write the contents of the JSONObject as JSON text to a writer. For
 | 
					     * Write the contents of the JSONObject as JSON text to a writer. For
 | 
				
			||||||
     * compactness, no whitespace is added.
 | 
					     * compactness, no whitespace is added.
 | 
				
			||||||
@@ -1532,4 +1469,45 @@ public class JSONObject {
 | 
				
			|||||||
            throw new JSONException(exception);
 | 
					            throw new JSONException(exception);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * JSONObject.NULL is equivalent to the value that JavaScript calls null,
 | 
				
			||||||
 | 
					     * whilst Java's null is equivalent to the value that JavaScript calls
 | 
				
			||||||
 | 
					     * undefined.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final class Null {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /**
 | 
				
			||||||
 | 
					         * There is only intended to be a single instance of the NULL object,
 | 
				
			||||||
 | 
					         * so the clone method returns itself.
 | 
				
			||||||
 | 
					         *
 | 
				
			||||||
 | 
					         * @return NULL.
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        protected final Object clone() {
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /**
 | 
				
			||||||
 | 
					         * A Null object is equal to the null value and to itself.
 | 
				
			||||||
 | 
					         *
 | 
				
			||||||
 | 
					         * @param object An object to test for nullness.
 | 
				
			||||||
 | 
					         * @return true if the object parameter is the JSONObject.NULL object or
 | 
				
			||||||
 | 
					         * null.
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public boolean equals(final Object object) {
 | 
				
			||||||
 | 
					            return (object == null) || (object == this);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /**
 | 
				
			||||||
 | 
					         * Get the "null" string value.
 | 
				
			||||||
 | 
					         *
 | 
				
			||||||
 | 
					         * @return The string "null".
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public String toString() {
 | 
				
			||||||
 | 
					            return "null";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.StringWriter;
 | 
					import java.io.StringWriter;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.*;
 | 
					import java.io.*;
 | 
				
			||||||
@@ -33,12 +12,12 @@ import java.io.*;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class JSONTokener {
 | 
					public class JSONTokener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Reader reader;
 | 
				
			||||||
    private long character;
 | 
					    private long character;
 | 
				
			||||||
    private boolean eof;
 | 
					    private boolean eof;
 | 
				
			||||||
    private long index;
 | 
					    private long index;
 | 
				
			||||||
    private long line;
 | 
					    private long line;
 | 
				
			||||||
    private char previous;
 | 
					    private char previous;
 | 
				
			||||||
    private final Reader reader;
 | 
					 | 
				
			||||||
    private boolean usePrevious;
 | 
					    private boolean usePrevious;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -74,21 +53,6 @@ public class JSONTokener {
 | 
				
			|||||||
        this(new StringReader(s));
 | 
					        this(new StringReader(s));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Back up one character. This provides a sort of lookahead capability,
 | 
					 | 
				
			||||||
     * so that you can test for a digit or letter before attempting to parse
 | 
					 | 
				
			||||||
     * the next number or identifier.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public void back() throws JSONException {
 | 
					 | 
				
			||||||
        if (this.usePrevious || (this.index <= 0)) {
 | 
					 | 
				
			||||||
            throw new JSONException("Stepping back two steps is not supported");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        this.index -= 1;
 | 
					 | 
				
			||||||
        this.character -= 1;
 | 
					 | 
				
			||||||
        this.usePrevious = true;
 | 
					 | 
				
			||||||
        this.eof = false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get the hex value of a character (base16).
 | 
					     * Get the hex value of a character (base16).
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -109,6 +73,21 @@ public class JSONTokener {
 | 
				
			|||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Back up one character. This provides a sort of lookahead capability,
 | 
				
			||||||
 | 
					     * so that you can test for a digit or letter before attempting to parse
 | 
				
			||||||
 | 
					     * the next number or identifier.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void back() throws JSONException {
 | 
				
			||||||
 | 
					        if (this.usePrevious || (this.index <= 0)) {
 | 
				
			||||||
 | 
					            throw new JSONException("Stepping back two steps is not supported");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        this.index -= 1;
 | 
				
			||||||
 | 
					        this.character -= 1;
 | 
				
			||||||
 | 
					        this.usePrevious = true;
 | 
				
			||||||
 | 
					        this.eof = false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean end() {
 | 
					    public boolean end() {
 | 
				
			||||||
        return this.eof && !this.usePrevious;
 | 
					        return this.eof && !this.usePrevious;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
@@ -59,13 +38,10 @@ import java.io.Writer;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class JSONWriter {
 | 
					public class JSONWriter {
 | 
				
			||||||
    private static final int maxdepth = 200;
 | 
					    private static final int maxdepth = 200;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The comma flag determines if a comma should be output before the next
 | 
					     * The object/array stack.
 | 
				
			||||||
     * value.
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private boolean comma;
 | 
					    private final JSONObject stack[];
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The current mode. Values:
 | 
					     * The current mode. Values:
 | 
				
			||||||
     * 'a' (array),
 | 
					     * 'a' (array),
 | 
				
			||||||
@@ -75,21 +51,19 @@ public class JSONWriter {
 | 
				
			|||||||
     * 'o' (object).
 | 
					     * 'o' (object).
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    protected char mode;
 | 
					    protected char mode;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * The object/array stack.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private final JSONObject stack[];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * The stack top index. A value of 0 indicates that the stack is empty.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private int top;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The writer that will receive the output.
 | 
					     * The writer that will receive the output.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    protected Writer writer;
 | 
					    protected Writer writer;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The comma flag determines if a comma should be output before the next
 | 
				
			||||||
 | 
					     * value.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private boolean comma;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The stack top index. A value of 0 indicates that the stack is empty.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private int top;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Make a fresh JSONWriter. It can be used to build one JSON text.
 | 
					     * Make a fresh JSONWriter. It can be used to build one JSON text.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -59,22 +38,19 @@ package com.intellectualcrafters.json;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class Kim {
 | 
					public class Kim {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * The byte array containing the kim's content.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private byte[] bytes = null;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * The kim's hashcode, conforming to Java's hashcode conventions.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private int hashcode = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The number of bytes in the kim. The number of bytes can be as much as
 | 
					     * The number of bytes in the kim. The number of bytes can be as much as
 | 
				
			||||||
     * three times the number of characters.
 | 
					     * three times the number of characters.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int length = 0;
 | 
					    public int length = 0;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The byte array containing the kim's content.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private byte[] bytes = null;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The kim's hashcode, conforming to Java's hashcode conventions.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private int hashcode = 0;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The memoization of toString().
 | 
					     * The memoization of toString().
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -216,6 +192,21 @@ public class Kim {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns the number of bytes needed to contain the character in Kim
 | 
				
			||||||
 | 
					     * format.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param character a Unicode character between 0 and 0x10FFFF.
 | 
				
			||||||
 | 
					     * @return 1, 2, or 3
 | 
				
			||||||
 | 
					     * @throws JSONException if the character is not representable in a kim.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static int characterSize(final int character) throws JSONException {
 | 
				
			||||||
 | 
					        if ((character < 0) || (character > 0x10FFFF)) {
 | 
				
			||||||
 | 
					            throw new JSONException("Bad character " + character);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return character <= 0x7F ? 1 : character <= 0x3FFF ? 2 : 3;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Returns the character at the specified index. The index refers to byte
 | 
					     * Returns the character at the specified index. The index refers to byte
 | 
				
			||||||
     * values and ranges from 0 to length - 1. The index of the next character
 | 
					     * values and ranges from 0 to length - 1. The index of the next character
 | 
				
			||||||
@@ -247,21 +238,6 @@ public class Kim {
 | 
				
			|||||||
        throw new JSONException("Bad character at " + at);
 | 
					        throw new JSONException("Bad character at " + at);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Returns the number of bytes needed to contain the character in Kim
 | 
					 | 
				
			||||||
     * format.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param character a Unicode character between 0 and 0x10FFFF.
 | 
					 | 
				
			||||||
     * @return 1, 2, or 3
 | 
					 | 
				
			||||||
     * @throws JSONException if the character is not representable in a kim.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static int characterSize(final int character) throws JSONException {
 | 
					 | 
				
			||||||
        if ((character < 0) || (character > 0x10FFFF)) {
 | 
					 | 
				
			||||||
            throw new JSONException("Bad character " + character);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return character <= 0x7F ? 1 : character <= 0x3FFF ? 2 : 3;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Copy the contents of this kim to a byte array.
 | 
					     * Copy the contents of this kim to a byte array.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Iterator;
 | 
					import java.util.Iterator;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,24 +1,3 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
// PlotSquared - A plot manager and world generator for the Bukkit API                             /
 | 
					 | 
				
			||||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters                                       /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is free software; you can redistribute it and/or modify                            /
 | 
					 | 
				
			||||||
// it under the terms of the GNU General Public License as published by                            /
 | 
					 | 
				
			||||||
// the Free Software Foundation; either version 3 of the License, or                               /
 | 
					 | 
				
			||||||
// (at your option) any later version.                                                             /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// This program is distributed in the hope that it will be useful,                                 /
 | 
					 | 
				
			||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                  /
 | 
					 | 
				
			||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                   /
 | 
					 | 
				
			||||||
// GNU General Public License for more details.                                                    /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You should have received a copy of the GNU General Public License                               /
 | 
					 | 
				
			||||||
// along with this program; if not, write to the Free Software Foundation,                         /
 | 
					 | 
				
			||||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA                               /
 | 
					 | 
				
			||||||
//                                                                                                 /
 | 
					 | 
				
			||||||
// You can contact us via: support@intellectualsites.com                                           /
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.intellectualcrafters.json;
 | 
					package com.intellectualcrafters.json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user