You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Ferdinand Malzer (JIRA)" <ji...@apache.org> on 2013/03/27 11:11:15 UTC
[jira] [Created] (JCR-3548) using properties property defined as
OnParentVersionAction.IGNORE could not be changed without check-out (see
jcr 2.0 chapter 15.2.2) description holds reproducer
Ferdinand Malzer created JCR-3548:
-------------------------------------
Summary: using properties property defined as OnParentVersionAction.IGNORE could not be changed without check-out (see jcr 2.0 chapter 15.2.2) description holds reproducer
Key: JCR-3548
URL: https://issues.apache.org/jira/browse/JCR-3548
Project: Jackrabbit Content Repository
Issue Type: Bug
Components: jackrabbit-core
Affects Versions: 2.4.3
Environment: windows xp on hpq_nc8540
Reporter: Ferdinand Malzer
Priority: Minor
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.jcr.Binary;
import javax.jcr.Node;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.nodetype.PropertyDefinitionTemplate;
import javax.jcr.query.qom.QueryObjectModelConstants;
import javax.jcr.version.OnParentVersionAction;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.core.RepositoryImpl;
import org.apache.jackrabbit.core.config.RepositoryConfig;
import sun.net.www.MimeTable;
public class ReproduceOPVIgnoreProblem {
private static final String NT_RESOURCE = "my_Resource";
private static final String RESOURCE_PROP_TEST = "my_TestProperty";
private static final String CONTENT = "some information";
private static final String RES_NAME = "test.txt";
private RepositoryImpl repository;
public static void main(String[] args) throws Exception {
ReproduceOPVIgnoreProblem useCase = new ReproduceOPVIgnoreProblem();
useCase.run();
}
private void run() throws IOException, RepositoryException {
RepositoryConfig config = RepositoryConfig.install(new File("C:/JavaDev/jaRabT1/jrContent"));
repository = RepositoryImpl.create(config);
addResourceNodeType();
System.out.println("node type added");
createResourceAndCheckIn();
System.out.println("new node checked-in");
System.out.println("################# before change OPV property ####################");
changeOPVIgnoreproperty();
System.out.println("################# after change OPV property ####################");
deleteResource();
System.out.println("node deleted");
}
private void deleteResource() throws RepositoryException {
Session session = null;
try {
session = login();
Node node = session.getRootNode().getNode(RES_NAME);
node.remove();
session.save();
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (session != null) session.logout();
}
}
private void createResourceAndCheckIn() {
Session session = null;
try {
session = login();
Node parentNode = session.getRootNode();
Node fileNode = parentNode.addNode(RES_NAME, NT_RESOURCE);
fileNode.addMixin(JcrConstants.MIX_VERSIONABLE);
fileNode.addMixin(JcrConstants.MIX_LOCKABLE);
Node resNode = fileNode.addNode(JcrConstants.JCR_CONTENT, "nt:resource");
String mimeType = getMimeType(RES_NAME);
resNode.setProperty("jcr:mimeType", mimeType);
InputStream stream = new BufferedInputStream(new ByteArrayInputStream(CONTENT.getBytes()));
Binary binary = session.getValueFactory().createBinary(stream);
resNode.setProperty(JcrConstants.JCR_DATA ,binary);
session.save();
session.getWorkspace().getVersionManager().checkin(fileNode.getPath());
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (session != null) session.logout();
}
}
private void changeOPVIgnoreproperty () throws RepositoryException {
Session session = null;
try {
session = login();
Node node = session.getRootNode().getNode(RES_NAME);
node.setProperty(RESOURCE_PROP_TEST, "testValue");
session.save();
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (session != null) session.logout();
}
}
private void addResourceNodeType() throws RepositoryException {
Session session = null;
try {
session = login();
NodeTypeManager ntm =session.getWorkspace().getNodeTypeManager();
NodeTypeTemplate gcms_content = ntm.createNodeTypeTemplate();
gcms_content.setDeclaredSuperTypeNames(new String[]{JcrConstants.NT_FILE});
gcms_content.setName(NT_RESOURCE);
gcms_content.setQueryable(true);
@SuppressWarnings("unchecked")
List<PropertyDefinitionTemplate> propDefList = gcms_content.getPropertyDefinitionTemplates();
//additional properties
PropertyDefinitionTemplate propDef = ntm.createPropertyDefinitionTemplate();
//ALL or REGISTERED
propDef.setName(RESOURCE_PROP_TEST);
propDef.setAutoCreated(false);
propDef.setRequiredType(PropertyType.STRING);
propDef.setAvailableQueryOperators(new String[] {QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO});
propDef.setOnParentVersion(OnParentVersionAction.IGNORE);
propDefList.add(propDef);
ntm.registerNodeType(gcms_content, true);
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (session != null) session.logout();
}
}
private String getMimeType(String fileName) {
MimeTable mt = MimeTable.getDefaultTable();
String mimeType = mt.getContentTypeFor(fileName);
if (mimeType==null) mimeType="application/octet-stream";
return mimeType;
}
private Session login () throws RepositoryException {
return repository.login(new SimpleCredentials("admin","admin".toCharArray()));
}
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira