Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
Openfire
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Openfire
Commits
090831d3
Commit
090831d3
authored
Feb 20, 2015
by
Roman S
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update to REST API plugin version 1.0.1
parent
4c2804b6
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
5219 additions
and
4962 deletions
+5219
-4962
changelog.html
src/plugins/restAPI/changelog.html
+68
-59
plugin.xml
src/plugins/restAPI/plugin.xml
+21
-21
readme.html
src/plugins/restAPI/readme.html
+3702
-3752
JustMarriedController.java
...penfire/plugin/rest/controller/JustMarriedController.java
+259
-0
MUCRoomController.java
...re/openfire/plugin/rest/controller/MUCRoomController.java
+519
-504
UserServiceController.java
...penfire/plugin/rest/controller/UserServiceController.java
+511
-495
ExceptionType.java
...ftware/openfire/plugin/rest/exceptions/ExceptionType.java
+41
-39
JerseyWrapper.java
...esoftware/openfire/plugin/rest/service/JerseyWrapper.java
+6
-0
UserRosterService.java
...tware/openfire/plugin/rest/service/UserRosterService.java
+92
-92
No files found.
src/plugins/restAPI/changelog.html
View file @
090831d3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>
REST API Plugin Changelog
</title>
<style
type=
"text/css"
>
BODY
{
font-size
:
100%
;
}
BODY
,
TD
,
TH
{
font-family
:
tahoma
,
verdana
,
arial
,
helvetica
,
sans-serif
;
font-size
:
0.8em
;
}
H2
{
font-size
:
10pt
;
font-weight
:
bold
;
padding-left
:
1em
;
}
A
:hover
{
text-decoration
:
none
;
}
H1
{
font-family
:
tahoma
,
arial
,
helvetica
,
sans-serif
;
font-size
:
1.4em
;
font-weight
:
bold
;
border-bottom
:
1px
#ccc
solid
;
padding-bottom
:
2px
;
}
TT
{
font-family
:
courier
new
;
font-weight
:
bold
;
color
:
#060
;
}
PRE
{
font-family
:
courier
new
;
font-size
:
100%
;
}
</style>
</head>
<body>
<h1>
REST API Plugin Changelog
</h1>
<p><b>
1.0.0
</b>
-- February 3rd, 2015
</p>
<ul>
<li>
UserService plugin and MUC Service plugin are merged to the REST API plugin.
</li>
<li>
Extended REST API with JSON data format.
</li>
</ul>
<p><b>
0.1.0
</b>
-- November 14th, 2014
</p>
<ul>
<li>
Initial release of REST API Plugin with possibility to manage system properties.
</li>
</ul>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>
REST API Plugin Changelog
</title>
<style
type=
"text/css"
>
BODY
{
font-size
:
100%
;
}
BODY
,
TD
,
TH
{
font-family
:
tahoma
,
verdana
,
arial
,
helvetica
,
sans-serif
;
font-size
:
0.8em
;
}
H2
{
font-size
:
10pt
;
font-weight
:
bold
;
padding-left
:
1em
;
}
A
:hover
{
text-decoration
:
none
;
}
H1
{
font-family
:
tahoma
,
arial
,
helvetica
,
sans-serif
;
font-size
:
1.4em
;
font-weight
:
bold
;
border-bottom
:
1px
#ccc
solid
;
padding-bottom
:
2px
;
}
TT
{
font-family
:
courier
new
;
font-weight
:
bold
;
color
:
#060
;
}
PRE
{
font-family
:
courier
new
;
font-size
:
100%
;
}
</style>
</head>
<body>
<h1>
REST API Plugin Changelog
</h1>
<p><b>
1.0.1
</b>
-- February 20th, 2015
</p>
<ul>
<li>
Added possibility to rename a user (Thanks to JustMarried plugin)
</li>
<li>
Adjusted HTTP Codes by conflict to HTTP CODE: 409
</li>
<li>
Added subject to Chat room
</li>
<li>
Disabled jersey logging on startup
</li>
<li>
By create a new chat room the chat room service will be created if it was not there
</li>
</ul>
<p><b>
1.0.0
</b>
-- February 3rd, 2015
</p>
<ul>
<li>
UserService plugin and MUC Service plugin are merged to the REST API plugin.
</li>
<li>
Extended REST API with JSON data format.
</li>
</ul>
<p><b>
0.1.0
</b>
-- November 14th, 2014
</p>
<ul>
<li>
Initial release of REST API Plugin with possibility to manage system properties.
</li>
</ul>
</body>
</html>
src/plugins/restAPI/plugin.xml
View file @
090831d3
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<class>
org.jivesoftware.openfire.plugin.rest.RESTServicePlugin
</class>
<name>
REST API
</name>
<description>
Allows administration over a RESTful API.
</description>
<author>
Roman Soldatow
</author>
<version>
1.0.
0
</version>
<date>
02/
03/2015
</date>
<minServerVersion>
3.9.0
</minServerVersion>
<adminconsole>
<tab
id=
"tab-server"
>
<sidebar
id=
"sidebar-server-settings"
>
<item
id=
"rest-api"
name=
"REST API"
url=
"rest-api.jsp"
description=
"Click to manage the service that allows to configure the Openfire over a RESTFul API"
/>
</sidebar>
</tab>
</adminconsole>
</plugin>
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<class>
org.jivesoftware.openfire.plugin.rest.RESTServicePlugin
</class>
<name>
REST API
</name>
<description>
Allows administration over a RESTful API.
</description>
<author>
Roman Soldatow
</author>
<version>
1.0.
1
</version>
<date>
02/
20/2015
</date>
<minServerVersion>
3.9.0
</minServerVersion>
<adminconsole>
<tab
id=
"tab-server"
>
<sidebar
id=
"sidebar-server-settings"
>
<item
id=
"rest-api"
name=
"REST API"
url=
"rest-api.jsp"
description=
"Click to manage the service that allows to configure the Openfire over a RESTFul API"
/>
</sidebar>
</tab>
</adminconsole>
</plugin>
src/plugins/restAPI/readme.html
View file @
090831d3
This diff is collapsed.
Click to expand it.
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/controller/JustMarriedController.java
0 → 100644
View file @
090831d3
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
controller
;
import
java.util.List
;
import
javax.ws.rs.core.Response
;
import
org.dom4j.Element
;
import
org.jivesoftware.openfire.SessionManager
;
import
org.jivesoftware.openfire.SharedGroupException
;
import
org.jivesoftware.openfire.XMPPServer
;
import
org.jivesoftware.openfire.auth.AuthFactory
;
import
org.jivesoftware.openfire.group.Group
;
import
org.jivesoftware.openfire.group.GroupManager
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ExceptionType
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.roster.Roster
;
import
org.jivesoftware.openfire.roster.RosterItem
;
import
org.jivesoftware.openfire.session.ClientSession
;
import
org.jivesoftware.openfire.user.User
;
import
org.jivesoftware.openfire.user.UserAlreadyExistsException
;
import
org.jivesoftware.openfire.user.UserManager
;
import
org.jivesoftware.openfire.user.UserNotFoundException
;
import
org.jivesoftware.openfire.vcard.VCardManager
;
import
org.xmpp.packet.StreamError
;
/**
* The Class JustMarriedController.
*/
public
class
JustMarriedController
{
/**
* Change name.
*
* @param currentUserName
* the current user name
* @param newUserName
* the new user name
* @param deleteOldUser
* the delete old user
* @param newEmail
* the new email
* @param newRealName
* the new real name
* @return true, if successful
* @throws ServiceException
* the service exception
*/
public
static
boolean
changeName
(
String
currentUserName
,
String
newUserName
,
boolean
deleteOldUser
,
String
newEmail
,
String
newRealName
)
throws
ServiceException
{
UserManager
userManager
=
UserManager
.
getInstance
();
try
{
User
currentUser
=
userManager
.
getUser
(
currentUserName
);
// Old user found, create new one
String
password
=
AuthFactory
.
getPassword
(
currentUserName
);
String
newName
=
(
newRealName
==
null
||
newRealName
.
length
()
==
0
)
?
currentUser
.
getName
()
:
newRealName
;
String
newMail
=
(
newEmail
==
null
||
newEmail
.
length
()
==
0
)
?
currentUser
.
getEmail
()
:
newEmail
;
User
newUser
=
userManager
.
createUser
(
newUserName
,
password
,
currentUser
.
getName
(),
newMail
);
newUser
.
setName
(
newName
);
newUser
.
setNameVisible
(
currentUser
.
isNameVisible
());
newUser
.
setEmailVisible
(
currentUser
.
isEmailVisible
());
newUser
.
setCreationDate
(
currentUser
.
getCreationDate
());
copyRoster
(
currentUser
,
newUser
,
currentUserName
);
copyProperties
(
currentUser
,
newUser
);
copyToGroups
(
currentUserName
,
newUserName
);
copyVCard
(
currentUserName
,
newUserName
);
if
(
deleteOldUser
)
{
deleteUser
(
currentUser
);
}
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
"Could not find user"
,
currentUserName
,
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
"Could not create new user"
,
newUserName
,
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
CONFLICT
,
e
);
}
return
true
;
}
/**
* Copy v card.
*
* @param currentUserName
* the current user name
* @param newUserName
* the new user name
* @throws ServiceException
* the service exception
*/
private
static
void
copyVCard
(
String
currentUserName
,
String
newUserName
)
throws
ServiceException
{
VCardManager
vcardManager
=
VCardManager
.
getInstance
();
Element
vcard
=
vcardManager
.
getVCard
(
currentUserName
);
if
(
vcard
!=
null
)
{
try
{
vcardManager
.
setVCard
(
newUserName
,
vcard
);
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"Could not copy vcard to new user"
,
newUserName
,
ExceptionType
.
ILLEGAL_ARGUMENT_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
}
}
/**
* Copy to groups.
*
* @param currentUser
* the current user
* @param newUser
* the new user
*/
private
static
void
copyToGroups
(
String
currentUser
,
String
newUser
)
{
GroupManager
groupManager
=
GroupManager
.
getInstance
();
for
(
Group
group
:
groupManager
.
getGroups
())
{
if
(
group
.
isUser
(
currentUser
))
{
group
.
getMembers
().
add
(
XMPPServer
.
getInstance
().
createJID
(
newUser
,
null
));
}
}
}
/**
* Delete user.
*
* @param oldUser
* the old user
*/
private
static
void
deleteUser
(
User
oldUser
)
{
UserManager
.
getInstance
().
deleteUser
(
oldUser
);
final
StreamError
error
=
new
StreamError
(
StreamError
.
Condition
.
not_authorized
);
for
(
ClientSession
sess
:
SessionManager
.
getInstance
().
getSessions
(
oldUser
.
getUsername
()))
{
sess
.
deliverRawText
(
error
.
toXML
());
sess
.
close
();
}
}
/**
* Copy properties.
*
* @param currentUser
* the current user
* @param newUser
* the new user
*/
private
static
void
copyProperties
(
User
currentUser
,
User
newUser
)
{
for
(
String
key
:
currentUser
.
getProperties
().
keySet
())
{
newUser
.
getProperties
().
put
(
key
,
User
.
getPropertyValue
(
currentUser
.
getUsername
(),
key
));
}
}
/**
* Copy roster.
*
* @param currentUser
* the current user
* @param newUser
* the new user
* @param currentUserName
* the current user name
* @throws ServiceException
* the service exception
*/
private
static
void
copyRoster
(
User
currentUser
,
User
newUser
,
String
currentUserName
)
throws
ServiceException
{
Roster
newRoster
=
newUser
.
getRoster
();
Roster
currentRoster
=
currentUser
.
getRoster
();
for
(
RosterItem
item
:
currentRoster
.
getRosterItems
())
{
try
{
List
<
String
>
groups
=
item
.
getGroups
();
RosterItem
justCreated
=
newRoster
.
createRosterItem
(
item
.
getJid
(),
item
.
getNickname
(),
groups
,
true
,
true
);
justCreated
.
setAskStatus
(
item
.
getAskStatus
());
justCreated
.
setRecvStatus
(
item
.
getRecvStatus
());
justCreated
.
setSubStatus
(
item
.
getSubStatus
());
for
(
Group
gr
:
item
.
getSharedGroups
())
{
justCreated
.
addSharedGroup
(
gr
);
}
for
(
Group
gr
:
item
.
getInvisibleSharedGroups
())
{
justCreated
.
addInvisibleSharedGroup
(
gr
);
}
newRoster
.
updateRosterItem
(
justCreated
);
addNewUserToOthersRoster
(
newUser
,
item
,
currentUserName
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
"Could not create roster item for user "
,
newUser
.
getUsername
(),
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
CONFLICT
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
"Could not create roster item, because it is a contact from a shared group"
,
newUser
.
getUsername
(),
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
"Could not update roster item for user "
+
newUser
.
getUsername
()
+
" because it was not properly created."
,
newUser
.
getUsername
(),
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
}
}
/**
* Adds the new user to others roster.
*
* @param newUser
* the new user
* @param otherItem
* the other item
* @param currentUser
* the current user
* @throws ServiceException
* the service exception
*/
private
static
void
addNewUserToOthersRoster
(
User
newUser
,
RosterItem
otherItem
,
String
currentUser
)
throws
ServiceException
{
otherItem
.
getJid
();
UserManager
userManager
=
UserManager
.
getInstance
();
// Is this user registered with our OF server?
String
username
=
otherItem
.
getJid
().
getNode
();
if
(
username
!=
null
&&
username
.
length
()
>
0
&&
userManager
.
isRegisteredUser
(
username
)
&&
XMPPServer
.
getInstance
().
isLocal
(
XMPPServer
.
getInstance
().
createJID
(
currentUser
,
null
)))
{
try
{
User
otherUser
=
userManager
.
getUser
(
username
);
Roster
otherRoster
=
otherUser
.
getRoster
();
RosterItem
oldUserOnOthersRoster
=
otherRoster
.
getRosterItem
(
XMPPServer
.
getInstance
().
createJID
(
currentUser
,
null
));
try
{
if
(!
oldUserOnOthersRoster
.
isOnlyShared
())
{
RosterItem
justCreated
=
otherRoster
.
createRosterItem
(
XMPPServer
.
getInstance
().
createJID
(
newUser
.
getUsername
(),
null
),
oldUserOnOthersRoster
.
getNickname
(),
oldUserOnOthersRoster
.
getGroups
(),
true
,
true
);
justCreated
.
setAskStatus
(
oldUserOnOthersRoster
.
getAskStatus
());
justCreated
.
setRecvStatus
(
oldUserOnOthersRoster
.
getRecvStatus
());
justCreated
.
setSubStatus
(
oldUserOnOthersRoster
.
getSubStatus
());
otherRoster
.
updateRosterItem
(
justCreated
);
}
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
"Could not create roster item for user "
,
newUser
.
getUsername
(),
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
CONFLICT
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
"Could not create roster item, because it is a contact from a shared group"
,
newUser
.
getUsername
(),
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
"Could not create roster item for user "
+
newUser
.
getUsername
()
+
" because it is a contact from a shared group."
,
newUser
.
getUsername
(),
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
}
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/controller/MUCRoomController.java
View file @
090831d3
This diff is collapsed.
Click to expand it.
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/controller/UserServiceController.java
View file @
090831d3
This diff is collapsed.
Click to expand it.
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/exceptions/ExceptionType.java
View file @
090831d3
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
exceptions
;
/**
* The Class ExceptionType.
*/
public
final
class
ExceptionType
{
/** The Constant ILLEGAL_ARGUMENT_EXCEPTION. */
public
static
final
String
ILLEGAL_ARGUMENT_EXCEPTION
=
"IllegalArgumentException"
;
/** The Constant SHARED_GROUP_EXCEPTION. */
public
static
final
String
SHARED_GROUP_EXCEPTION
=
"SharedGroupException"
;
/** The Constant PROPERTY_NOT_FOUND. */
public
static
final
String
PROPERTY_NOT_FOUND
=
"PropertyNotFoundException"
;
/** The Constant USER_ALREADY_EXISTS_EXCEPTION. */
public
static
final
String
USER_ALREADY_EXISTS_EXCEPTION
=
"UserAlreadyExistsException"
;
/** The Constant USER_NOT_FOUND_EXCEPTION. */
public
static
final
String
USER_NOT_FOUND_EXCEPTION
=
"UserNotFoundException"
;
/** The Constant GROUP_ALREADY_EXISTS. */
public
static
final
String
GROUP_ALREADY_EXISTS
=
"GroupAlreadyExistsException"
;
/** The Constant GROUP_NOT_FOUND. */
public
static
final
String
GROUP_NOT_FOUND
=
"GroupNotFoundException"
;
/** The Constant ROOM_NOT_FOUND. */
public
static
final
String
ROOM_NOT_FOUND
=
"RoomNotFoundException"
;
/** The Constant NOT_ALLOWED. */
public
static
final
String
NOT_ALLOWED
=
"NotAllowedException"
;
/**
* Instantiates a new exception type.
*/
private
ExceptionType
()
{
}
}
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
exceptions
;
/**
* The Class ExceptionType.
*/
public
final
class
ExceptionType
{
/** The Constant ILLEGAL_ARGUMENT_EXCEPTION. */
public
static
final
String
ILLEGAL_ARGUMENT_EXCEPTION
=
"IllegalArgumentException"
;
/** The Constant SHARED_GROUP_EXCEPTION. */
public
static
final
String
SHARED_GROUP_EXCEPTION
=
"SharedGroupException"
;
/** The Constant PROPERTY_NOT_FOUND. */
public
static
final
String
PROPERTY_NOT_FOUND
=
"PropertyNotFoundException"
;
/** The Constant USER_ALREADY_EXISTS_EXCEPTION. */
public
static
final
String
USER_ALREADY_EXISTS_EXCEPTION
=
"UserAlreadyExistsException"
;
/** The Constant USER_NOT_FOUND_EXCEPTION. */
public
static
final
String
USER_NOT_FOUND_EXCEPTION
=
"UserNotFoundException"
;
/** The Constant GROUP_ALREADY_EXISTS. */
public
static
final
String
GROUP_ALREADY_EXISTS
=
"GroupAlreadyExistsException"
;
/** The Constant GROUP_NOT_FOUND. */
public
static
final
String
GROUP_NOT_FOUND
=
"GroupNotFoundException"
;
/** The Constant ROOM_NOT_FOUND. */
public
static
final
String
ROOM_NOT_FOUND
=
"RoomNotFoundException"
;
/** The Constant NOT_ALLOWED. */
public
static
final
String
NOT_ALLOWED
=
"NotAllowedException"
;
/** The Constant ALREADY_EXISTS. */
public
static
final
String
ALREADY_EXISTS
=
"AlreadyExistsException"
;
/**
* Instantiates a new exception type.
*/
private
ExceptionType
()
{
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/JerseyWrapper.java
View file @
090831d3
...
...
@@ -2,6 +2,8 @@ package org.jivesoftware.openfire.plugin.rest.service;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
javax.servlet.ServletConfig
;
import
javax.servlet.ServletException
;
...
...
@@ -43,8 +45,12 @@ public class JerseyWrapper extends ServletContainer {
/** The prc. */
private
static
PackagesResourceConfig
prc
;
/** The Constant JERSEY_LOGGER. */
private
final
static
Logger
JERSEY_LOGGER
=
Logger
.
getLogger
(
"com.sun.jersey"
);
static
{
JERSEY_LOGGER
.
setLevel
(
Level
.
SEVERE
);
config
=
new
HashMap
<
String
,
Object
>();
config
.
put
(
RESOURCE_CONFIG_CLASS_KEY
,
RESOURCE_CONFIG_CLASS
);
prc
=
new
PackagesResourceConfig
(
SCAN_PACKAGE_DEFAULT
);
...
...
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/UserRosterService.java
View file @
090831d3
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.annotation.PostConstruct
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.openfire.SharedGroupException
;
import
org.jivesoftware.openfire.plugin.rest.controller.UserServiceController
;
import
org.jivesoftware.openfire.plugin.rest.entity.RosterEntities
;
import
org.jivesoftware.openfire.plugin.rest.entity.RosterItemEntity
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ExceptionType
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.user.UserAlreadyExistsException
;
import
org.jivesoftware.openfire.user.UserNotFoundException
;
@Path
(
"restapi/v1/users/{username}/roster"
)
public
class
UserRosterService
{
private
static
final
String
COULD_NOT_UPDATE_THE_ROSTER
=
"Could not update the roster"
;
private
static
final
String
COULD_NOT_CREATE_ROSTER_ITEM
=
"Could not create roster item"
;
private
UserServiceController
plugin
;
@PostConstruct
public
void
init
()
{
plugin
=
UserServiceController
.
getInstance
();
}
@GET
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
RosterEntities
getUserRoster
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
return
plugin
.
getRosterEntities
(
username
);
}
@POST
public
Response
createRoster
(
@PathParam
(
"username"
)
String
username
,
RosterItemEntity
rosterItemEntity
)
throws
ServiceException
{
try
{
plugin
.
addRosterItem
(
username
,
rosterItemEntity
);
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{rosterJid}"
)
public
Response
deleteRoster
(
@PathParam
(
"username"
)
String
username
,
@PathParam
(
"rosterJid"
)
String
rosterJid
)
throws
ServiceException
{
try
{
plugin
.
deleteRosterItem
(
username
,
rosterJid
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
"Could not delete the roster item"
,
rosterJid
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
@PUT
@Path
(
"/{rosterJid}"
)
public
Response
updateRoster
(
@PathParam
(
"username"
)
String
username
,
@PathParam
(
"rosterJid"
)
String
rosterJid
,
RosterItemEntity
rosterItemEntity
)
throws
ServiceException
{
try
{
plugin
.
updateRosterItem
(
username
,
rosterJid
,
rosterItemEntity
);
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.annotation.PostConstruct
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.openfire.SharedGroupException
;
import
org.jivesoftware.openfire.plugin.rest.controller.UserServiceController
;
import
org.jivesoftware.openfire.plugin.rest.entity.RosterEntities
;
import
org.jivesoftware.openfire.plugin.rest.entity.RosterItemEntity
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ExceptionType
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.user.UserAlreadyExistsException
;
import
org.jivesoftware.openfire.user.UserNotFoundException
;
@Path
(
"restapi/v1/users/{username}/roster"
)
public
class
UserRosterService
{
private
static
final
String
COULD_NOT_UPDATE_THE_ROSTER
=
"Could not update the roster"
;
private
static
final
String
COULD_NOT_CREATE_ROSTER_ITEM
=
"Could not create roster item"
;
private
UserServiceController
plugin
;
@PostConstruct
public
void
init
()
{
plugin
=
UserServiceController
.
getInstance
();
}
@GET
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
RosterEntities
getUserRoster
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
return
plugin
.
getRosterEntities
(
username
);
}
@POST
public
Response
createRoster
(
@PathParam
(
"username"
)
String
username
,
RosterItemEntity
rosterItemEntity
)
throws
ServiceException
{
try
{
plugin
.
addRosterItem
(
username
,
rosterItemEntity
);
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
CONFLICT
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{rosterJid}"
)
public
Response
deleteRoster
(
@PathParam
(
"username"
)
String
username
,
@PathParam
(
"rosterJid"
)
String
rosterJid
)
throws
ServiceException
{
try
{
plugin
.
deleteRosterItem
(
username
,
rosterJid
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
"Could not delete the roster item"
,
rosterJid
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
@PUT
@Path
(
"/{rosterJid}"
)
public
Response
updateRoster
(
@PathParam
(
"username"
)
String
username
,
@PathParam
(
"rosterJid"
)
String
rosterJid
,
RosterItemEntity
rosterItemEntity
)
throws
ServiceException
{
try
{
plugin
.
updateRosterItem
(
username
,
rosterJid
,
rosterItemEntity
);
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
CONFLICT
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment