mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-17 15:03:18 +00:00
Make the responser of the request copy configurable
This commit is contained in:
@@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
* The contents of this file are subject to the license and copyright
|
||||||
|
* detailed in the LICENSE and NOTICE files at the root of the source
|
||||||
|
* tree and available online at
|
||||||
|
*
|
||||||
|
* http://www.dspace.org/license/
|
||||||
|
*/
|
||||||
|
package org.dspace.app.requestitem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple DTO to transfer data about the corresponding author for the Request
|
||||||
|
* Copy feature
|
||||||
|
*
|
||||||
|
* @author Andrea Bollini
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RequestItemAuthor {
|
||||||
|
private String fullName;
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
public RequestItemAuthor(String fullName, String email) {
|
||||||
|
super();
|
||||||
|
this.fullName = fullName;
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,25 @@
|
|||||||
|
/**
|
||||||
|
* The contents of this file are subject to the license and copyright
|
||||||
|
* detailed in the LICENSE and NOTICE files at the root of the source
|
||||||
|
* tree and available online at
|
||||||
|
*
|
||||||
|
* http://www.dspace.org/license/
|
||||||
|
*/
|
||||||
|
package org.dspace.app.requestitem;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
import org.dspace.content.Item;
|
||||||
|
import org.dspace.core.Context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface to abstract the strategy for select the author to contact for
|
||||||
|
* request copy
|
||||||
|
*
|
||||||
|
* @author Andrea Bollini
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface RequestItemAuthorExtractor {
|
||||||
|
public RequestItemAuthor getRequestItemAuthor(Context context, Item item)
|
||||||
|
throws SQLException;
|
||||||
|
}
|
@@ -0,0 +1,75 @@
|
|||||||
|
/**
|
||||||
|
* The contents of this file are subject to the license and copyright
|
||||||
|
* detailed in the LICENSE and NOTICE files at the root of the source
|
||||||
|
* tree and available online at
|
||||||
|
*
|
||||||
|
* http://www.dspace.org/license/
|
||||||
|
*/
|
||||||
|
package org.dspace.app.requestitem;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.dspace.content.DCValue;
|
||||||
|
import org.dspace.content.Item;
|
||||||
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.core.I18nUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to look to an item metadata for the corresponding author name and email.
|
||||||
|
* Failover to the RequestItemSubmitterStrategy
|
||||||
|
*
|
||||||
|
* @author Andrea Bollini
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RequestItemMetadataStrategy extends RequestItemSubmitterStrategy {
|
||||||
|
|
||||||
|
private String emailMetadata;
|
||||||
|
private String fullNameMatadata;
|
||||||
|
|
||||||
|
public RequestItemMetadataStrategy() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RequestItemAuthor getRequestItemAuthor(Context context, Item item)
|
||||||
|
throws SQLException {
|
||||||
|
if (emailMetadata != null)
|
||||||
|
{
|
||||||
|
DCValue[] vals = item.getMetadata(emailMetadata);
|
||||||
|
if (vals.length > 0)
|
||||||
|
{
|
||||||
|
String email = vals[0].value;
|
||||||
|
String fullname = null;
|
||||||
|
if (fullNameMatadata != null)
|
||||||
|
{
|
||||||
|
DCValue[] nameVals = item.getMetadata(fullNameMatadata);
|
||||||
|
if (nameVals.length > 0)
|
||||||
|
{
|
||||||
|
fullname = nameVals[0].value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(fullname))
|
||||||
|
{
|
||||||
|
fullname = I18nUtil
|
||||||
|
.getMessage(
|
||||||
|
"org.dspace.app.requestitem.RequestItemMetadataStrategy.unnamed",
|
||||||
|
context);
|
||||||
|
}
|
||||||
|
RequestItemAuthor author = new RequestItemAuthor(
|
||||||
|
fullname, email);
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.getRequestItemAuthor(context, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmailMetadata(String emailMetadata) {
|
||||||
|
this.emailMetadata = emailMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullNameMatadata(String fullNameMatadata) {
|
||||||
|
this.fullNameMatadata = fullNameMatadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* The contents of this file are subject to the license and copyright
|
||||||
|
* detailed in the LICENSE and NOTICE files at the root of the source
|
||||||
|
* tree and available online at
|
||||||
|
*
|
||||||
|
* http://www.dspace.org/license/
|
||||||
|
*/
|
||||||
|
package org.dspace.app.requestitem;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
import org.dspace.content.Item;
|
||||||
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.eperson.EPerson;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basic strategy that looks to the original submitter.
|
||||||
|
*
|
||||||
|
* @author Andrea Bollini
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RequestItemSubmitterStrategy implements RequestItemAuthorExtractor {
|
||||||
|
|
||||||
|
public RequestItemSubmitterStrategy() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RequestItemAuthor getRequestItemAuthor(Context context, Item item)
|
||||||
|
throws SQLException {
|
||||||
|
EPerson submitter = item.getSubmitter();
|
||||||
|
RequestItemAuthor author = new RequestItemAuthor(
|
||||||
|
submitter.getFullName(), submitter.getEmail());
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The contents of this file are subject to the license and copyright
|
||||||
|
detailed in the LICENSE and NOTICE files at the root of the source
|
||||||
|
tree and available online at
|
||||||
|
|
||||||
|
http://www.dspace.org/license/
|
||||||
|
|
||||||
|
-->
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||||
|
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
||||||
|
http://www.springframework.org/schema/context
|
||||||
|
http://www.springframework.org/schema/context/spring-context-2.5.xsd"
|
||||||
|
default-autowire-candidates="*Service,*DAO,javax.sql.DataSource">
|
||||||
|
|
||||||
|
<context:annotation-config /> <!-- allows us to use spring annotations in beans -->
|
||||||
|
|
||||||
|
<bean class="org.dspace.app.requestitem.RequestItemMetadataStrategy"
|
||||||
|
id="org.dspace.app.requestitem.RequestItemAuthorExtractor">
|
||||||
|
<!--
|
||||||
|
Uncomment these properties if you want lookup in metadata the email and the name of the author to contact for request copy.
|
||||||
|
If you don't configure that or if the requested item doesn't have these metadata the submitter data are used as fail over
|
||||||
|
|
||||||
|
<property name="emailMetadata" value="schema.element.qualfier" />
|
||||||
|
<property name="fullNameMatadata" value="schema.element.qualfier" />
|
||||||
|
|
||||||
|
-->
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
@@ -19,6 +19,8 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
import org.dspace.app.requestitem.RequestItemAuthor;
|
||||||
|
import org.dspace.app.requestitem.RequestItemAuthorExtractor;
|
||||||
import org.dspace.app.webui.util.JSPManager;
|
import org.dspace.app.webui.util.JSPManager;
|
||||||
import org.dspace.app.webui.util.RequestItemManager;
|
import org.dspace.app.webui.util.RequestItemManager;
|
||||||
import org.dspace.app.webui.util.UIUtil;
|
import org.dspace.app.webui.util.UIUtil;
|
||||||
@@ -37,6 +39,7 @@ import org.dspace.handle.HandleManager;
|
|||||||
import org.dspace.storage.bitstore.BitstreamStorageManager;
|
import org.dspace.storage.bitstore.BitstreamStorageManager;
|
||||||
import org.dspace.storage.rdbms.DatabaseManager;
|
import org.dspace.storage.rdbms.DatabaseManager;
|
||||||
import org.dspace.storage.rdbms.TableRow;
|
import org.dspace.storage.rdbms.TableRow;
|
||||||
|
import org.dspace.utils.DSpace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Servlet for generate a statistisc report
|
* Servlet for generate a statistisc report
|
||||||
@@ -149,13 +152,13 @@ public class RequestItemServlet extends DSpaceServlet
|
|||||||
}
|
}
|
||||||
|
|
||||||
// User email from context
|
// User email from context
|
||||||
String authEmail = request.getParameter("email");
|
String requesterEmail = request.getParameter("email");
|
||||||
EPerson currentUser = context.getCurrentUser();
|
EPerson currentUser = context.getCurrentUser();
|
||||||
String userName = null;
|
String userName = null;
|
||||||
|
|
||||||
if (currentUser != null)
|
if (currentUser != null)
|
||||||
{
|
{
|
||||||
authEmail = currentUser.getEmail();
|
requesterEmail = currentUser.getEmail();
|
||||||
userName = currentUser.getFullName();
|
userName = currentUser.getFullName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,13 +171,13 @@ public class RequestItemServlet extends DSpaceServlet
|
|||||||
boolean allfiles = "true".equals(request.getParameter("allfiles"));
|
boolean allfiles = "true".equals(request.getParameter("allfiles"));
|
||||||
|
|
||||||
// Check all data is there
|
// Check all data is there
|
||||||
if (authEmail == null || authEmail.equals("") ||
|
if (requesterEmail == null || requesterEmail.equals("") ||
|
||||||
reqname == null || reqname.equals(""))
|
reqname == null || reqname.equals(""))
|
||||||
{
|
{
|
||||||
request.setAttribute("handle",handle);
|
request.setAttribute("handle",handle);
|
||||||
request.setAttribute("bitstream-id", bitstream_id);
|
request.setAttribute("bitstream-id", bitstream_id);
|
||||||
request.setAttribute("reqname", reqname);
|
request.setAttribute("reqname", reqname);
|
||||||
request.setAttribute("email", authEmail);
|
request.setAttribute("email", requesterEmail);
|
||||||
request.setAttribute("coment", coment);
|
request.setAttribute("coment", coment);
|
||||||
request.setAttribute("title", title);
|
request.setAttribute("title", title);
|
||||||
request.setAttribute("allfiles", allfiles?"true":null);
|
request.setAttribute("allfiles", allfiles?"true":null);
|
||||||
@@ -184,20 +187,38 @@ public class RequestItemServlet extends DSpaceServlet
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// All data is there, send the email
|
|
||||||
// get submiter email
|
|
||||||
EPerson submiter = item.getSubmitter();
|
|
||||||
|
|
||||||
//get email
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// All data is there, send the email
|
// All data is there, send the email
|
||||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(
|
Email email = Email.getEmail(I18nUtil.getEmailFilename(
|
||||||
context.getCurrentLocale(), "request_item.author"));
|
context.getCurrentLocale(), "request_item.author"));
|
||||||
email.addRecipient(submiter.getEmail());
|
|
||||||
|
RequestItemAuthor author = new DSpace()
|
||||||
|
.getServiceManager()
|
||||||
|
.getServiceByName(
|
||||||
|
RequestItemAuthorExtractor.class.getName(),
|
||||||
|
RequestItemAuthorExtractor.class)
|
||||||
|
.getRequestItemAuthor(context, item);
|
||||||
|
|
||||||
|
String authorEmail = author.getEmail();
|
||||||
|
String authorName = author.getFullName();
|
||||||
|
String emailRequest;
|
||||||
|
|
||||||
|
if (authorEmail != null) {
|
||||||
|
emailRequest = authorEmail;
|
||||||
|
} else {
|
||||||
|
emailRequest = ConfigurationManager
|
||||||
|
.getProperty("mail.helpdesk");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (emailRequest == null) {
|
||||||
|
emailRequest = ConfigurationManager
|
||||||
|
.getProperty("mail.admin");
|
||||||
|
}
|
||||||
|
email.addRecipient(emailRequest);
|
||||||
|
|
||||||
email.addArgument(reqname);
|
email.addArgument(reqname);
|
||||||
email.addArgument(authEmail);
|
email.addArgument(requesterEmail);
|
||||||
email.addArgument(allfiles ? I18nUtil
|
email.addArgument(allfiles ? I18nUtil
|
||||||
.getMessage("itemRequest.all") : Bitstream.find(
|
.getMessage("itemRequest.all") : Bitstream.find(
|
||||||
context, Integer.parseInt(bitstream_id)).getName());
|
context, Integer.parseInt(bitstream_id)).getName());
|
||||||
@@ -206,22 +227,23 @@ public class RequestItemServlet extends DSpaceServlet
|
|||||||
email.addArgument(title); // request item title
|
email.addArgument(title); // request item title
|
||||||
email.addArgument(coment); // message
|
email.addArgument(coment); // message
|
||||||
email.addArgument(RequestItemManager.getLinkTokenEmail(context,
|
email.addArgument(RequestItemManager.getLinkTokenEmail(context,
|
||||||
bitstream_id, item.getID(), authEmail, reqname,
|
bitstream_id, item.getID(), requesterEmail, reqname,
|
||||||
allfiles));
|
allfiles));
|
||||||
email.addArgument(submiter.getFullName()); // submmiter name
|
|
||||||
email.addArgument(submiter.getEmail()); // submmiter email
|
email.addArgument(authorName); // corresponding author name
|
||||||
|
email.addArgument(authorEmail); // corresponding author email
|
||||||
email.addArgument(ConfigurationManager
|
email.addArgument(ConfigurationManager
|
||||||
.getProperty("dspace.name"));
|
.getProperty("dspace.name"));
|
||||||
email.addArgument(ConfigurationManager
|
email.addArgument(ConfigurationManager
|
||||||
.getProperty("mail.helpdesk"));
|
.getProperty("mail.helpdesk"));
|
||||||
email.setReplyTo(authEmail);
|
email.setReplyTo(requesterEmail);
|
||||||
email.send();
|
email.send();
|
||||||
|
|
||||||
log.info(LogManager.getHeader(context,
|
log.info(LogManager.getHeader(context,
|
||||||
"sent_email_requestItem",
|
"sent_email_requestItem",
|
||||||
"submitter_id=" + authEmail
|
"submitter_id=" + requesterEmail
|
||||||
+ ",bitstream_id="+bitstream_id
|
+ ",bitstream_id="+bitstream_id
|
||||||
+ ",requestEmail="+authEmail));
|
+ ",requestEmail="+requesterEmail));
|
||||||
|
|
||||||
request.setAttribute("handle", handle);
|
request.setAttribute("handle", handle);
|
||||||
JSPManager.showJSP(request, response,
|
JSPManager.showJSP(request, response,
|
||||||
@@ -237,13 +259,13 @@ public class RequestItemServlet extends DSpaceServlet
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Display sugget form
|
// Display request copy form
|
||||||
log.info(LogManager.getHeader(context,
|
log.info(LogManager.getHeader(context,
|
||||||
"show_requestItem_form",
|
"show_requestItem_form",
|
||||||
"problem=false"));
|
"problem=false"));
|
||||||
request.setAttribute("handle", handle);
|
request.setAttribute("handle", handle);
|
||||||
request.setAttribute("bitstream-id", bitstream_id);
|
request.setAttribute("bitstream-id", bitstream_id);
|
||||||
request.setAttribute("email", authEmail);
|
request.setAttribute("email", requesterEmail);
|
||||||
request.setAttribute("reqname", userName);
|
request.setAttribute("reqname", userName);
|
||||||
request.setAttribute("title", title);
|
request.setAttribute("title", title);
|
||||||
request.setAttribute("allfiles", "true");
|
request.setAttribute("allfiles", "true");
|
||||||
|
@@ -20,6 +20,8 @@ import org.apache.cocoon.environment.Request;
|
|||||||
import org.apache.cocoon.environment.SourceResolver;
|
import org.apache.cocoon.environment.SourceResolver;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
import org.dspace.app.requestitem.RequestItemAuthor;
|
||||||
|
import org.dspace.app.requestitem.RequestItemAuthorExtractor;
|
||||||
import org.dspace.app.xmlui.utils.ContextUtil;
|
import org.dspace.app.xmlui.utils.ContextUtil;
|
||||||
import org.dspace.app.xmlui.utils.HandleUtil;
|
import org.dspace.app.xmlui.utils.HandleUtil;
|
||||||
import org.dspace.content.Bitstream;
|
import org.dspace.content.Bitstream;
|
||||||
@@ -35,6 +37,7 @@ import org.dspace.eperson.EPerson;
|
|||||||
import org.dspace.handle.HandleManager;
|
import org.dspace.handle.HandleManager;
|
||||||
import org.dspace.storage.rdbms.DatabaseManager;
|
import org.dspace.storage.rdbms.DatabaseManager;
|
||||||
import org.dspace.storage.rdbms.TableRow;
|
import org.dspace.storage.rdbms.TableRow;
|
||||||
|
import org.dspace.utils.DSpace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This action will send a mail to request a item to administrator when all mandatory data is present.
|
* This action will send a mail to request a item to administrator when all mandatory data is present.
|
||||||
@@ -103,9 +106,18 @@ public class SendItemRequestAction extends AbstractAction
|
|||||||
title=titleDC[0].value;
|
title=titleDC[0].value;
|
||||||
}
|
}
|
||||||
String emailRequest;
|
String emailRequest;
|
||||||
EPerson submiter = item.getSubmitter();
|
|
||||||
if(submiter!=null){
|
RequestItemAuthor author = new DSpace()
|
||||||
emailRequest=submiter.getEmail();
|
.getServiceManager()
|
||||||
|
.getServiceByName(RequestItemAuthorExtractor.class.getName(),
|
||||||
|
RequestItemAuthorExtractor.class)
|
||||||
|
.getRequestItemAuthor(context, item);
|
||||||
|
|
||||||
|
String authorEmail = author.getEmail();
|
||||||
|
String authorName = author.getFullName();
|
||||||
|
|
||||||
|
if(authorEmail!=null){
|
||||||
|
emailRequest=authorEmail;
|
||||||
}else{
|
}else{
|
||||||
emailRequest=ConfigurationManager.getProperty("mail.helpdesk");
|
emailRequest=ConfigurationManager.getProperty("mail.helpdesk");
|
||||||
}
|
}
|
||||||
@@ -123,8 +135,8 @@ public class SendItemRequestAction extends AbstractAction
|
|||||||
email.addArgument(title); // request item title
|
email.addArgument(title); // request item title
|
||||||
email.addArgument(message); // message
|
email.addArgument(message); // message
|
||||||
email.addArgument(getLinkTokenEmail(context,request, bitstreamId, item.getID(), requesterEmail, requesterName, Boolean.parseBoolean(allFiles)));
|
email.addArgument(getLinkTokenEmail(context,request, bitstreamId, item.getID(), requesterEmail, requesterName, Boolean.parseBoolean(allFiles)));
|
||||||
email.addArgument(submiter.getFullName()); // submmiter name
|
email.addArgument(authorName); // corresponding author name
|
||||||
email.addArgument(submiter.getEmail()); // submmiter email
|
email.addArgument(authorEmail); // corresponding author email
|
||||||
email.addArgument(ConfigurationManager.getProperty("dspace.name"));
|
email.addArgument(ConfigurationManager.getProperty("dspace.name"));
|
||||||
email.addArgument(ConfigurationManager.getProperty("mail.helpdesk"));
|
email.addArgument(ConfigurationManager.getProperty("mail.helpdesk"));
|
||||||
|
|
||||||
|
34
dspace/config/spring/api/requestitem.xml
Normal file
34
dspace/config/spring/api/requestitem.xml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The contents of this file are subject to the license and copyright
|
||||||
|
detailed in the LICENSE and NOTICE files at the root of the source
|
||||||
|
tree and available online at
|
||||||
|
|
||||||
|
http://www.dspace.org/license/
|
||||||
|
|
||||||
|
-->
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||||
|
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
||||||
|
http://www.springframework.org/schema/context
|
||||||
|
http://www.springframework.org/schema/context/spring-context-2.5.xsd"
|
||||||
|
default-autowire-candidates="*Service,*DAO,javax.sql.DataSource">
|
||||||
|
|
||||||
|
<context:annotation-config /> <!-- allows us to use spring annotations in beans -->
|
||||||
|
|
||||||
|
<bean class="org.dspace.app.requestitem.RequestItemMetadataStrategy"
|
||||||
|
id="org.dspace.app.requestitem.RequestItemAuthorExtractor">
|
||||||
|
<!--
|
||||||
|
Uncomment these properties if you want lookup in metadata the email and the name of the author to contact for request copy.
|
||||||
|
If you don't configure that or if the requested item doesn't have these metadata the submitter data are used as fail over
|
||||||
|
|
||||||
|
<property name="emailMetadata" value="schema.element.qualfier" />
|
||||||
|
<property name="fullNameMatadata" value="schema.element.qualfier" />
|
||||||
|
|
||||||
|
-->
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
Reference in New Issue
Block a user