Hi Experts!
My env:
- Java 8,
- Alfresco CE 5.1.x and 5.2.x.
- CMIS 1.1
My folder type definition in my-repo.AMP:
<type name="asisapcsf:aft_contract">
<title>SapSC Contract Folder</title>
<parent>asisapcsf:aft_year</parent>
<properties>
<property name="asisapcsf:dss_contract_number">
<type>d:text</type>
<mandatory>true</mandatory>
<constraints>
<constraint ref="asisapcs:stringLength50"/>
</constraints>
</property>
<property name="asisapcsf:dss_balance_object">
<type>d:text</type>
<mandatory>true</mandatory>
<default>EM</default>
<constraints>
<constraint ref="asisapcs:adc_balance_objects_list"/>
</constraints>
</property>
<property name="asisapcsf:dss_department">
<type>d:text</type>
<mandatory>true</mandatory>
<constraints>
<constraint ref="asisapcs:stringLength50"/>
</constraints>
</property>
</properties>
</type>
Also, this folder's type have a behaviour on "onCreate" event
If I create from JUnit tests in My-repo projects - the all right, all worked!
If I create from JUnit tests in My-repo projects with turn OFF my behaviour - the all right, all worked!
If I create from JUnit tests in My-cmis projects on full "charged" my custom Folder, with turn ON behaviour - I view (in folder's behavior class log out), that new Folder objects created without my custom attributes 8(((
My behavior's init code:
public AftContract() {
LOGGER.info("new Instance created. v{}, [{}]", VERSION, this);
}
/**
* realisation the behaviour's init()
*/
public void init() {
LOGGER.debug("Start");
// Create behaviours
this.onCreateNode = new JavaBehaviour(this, "onCreateNode", Behaviour.NotificationFrequency.FIRST_EVENT);
// Bind behaviours to node policies
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, "onCreateNode"),
I10nSapCSModelFolders.TYPE_CONTRACT,
this.onCreateNode
);
// namespacePrefixResolver
this.namespacePrefixResolver = new DynamicNamespacePrefixResolver(null);
namespacePrefixResolver.registerNamespace(NamespaceService.ALFRESCO_PREFIX, NamespaceService.ALFRESCO_URI);
namespacePrefixResolver.registerNamespace(NamespaceService.APP_MODEL_PREFIX, NamespaceService.APP_MODEL_1_0_URI);
namespacePrefixResolver.registerNamespace(NamespaceService.CONTENT_MODEL_PREFIX, NamespaceService.CONTENT_MODEL_1_0_URI);
namespacePrefixResolver.registerNamespace(I10nSapCSModelFolders.CONTENT_MODEL_PREFIX, I10nSapCSModelFolders.CONTENT_MODEL_URI);
LOGGER.debug("Finish");
}
My code in CMIS 1.1 client:
String folderName = "Test CMIS folder-5";
String folderTitle = "Test CMIS title";
String folderDescritpion = "Test CMIS description";
// Create a Map of objects with the props we want to set
Map<String, Object> properties = new HashMap<String, Object>();
List<String> aspects = new ArrayList<>();
aspects.add("P:cm:titled");
properties.put(PropertyIds.NAME, folderName);
properties.put(PropertyIds.OBJECT_TYPE_ID, "F:asisapcsf:aft_contract");
properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, aspects);
// fill cm:titled Aspect's attrs
properties.put("cm:title", folderTitle);
properties.put("cm:description", folderDescritpion);
// fill my Custom attrs
properties.put("asisapcsf:dss_contract_number", "00035");
properties.put("asisapcsf:dsi_contract_year", 2014);
properties.put("asisapcsf:dss_department", "11-06");
// create Folder
Folder newFolder = folder.createFolder(properties);
//Document doc = folder. createDocument(properties, contentStream, VersioningState.MAJOR);
assertNotNull("CMIS: Problem create new Folder: ", newFolder);
LOGGER.info("Succ create new Folder: [{}]: [{}]", newFolder.getPath(), newFolder);Log output (from onCreateNode AFT_CONTRACT behavior):
2017-01-20 11:58:36,197 [http-apr-8080-exec-7] TRACE AftContract.onCreateNode - dump aftContractNode:
[node: workspace://SpacesStore/c11125c1-2be9-4586-a0af-616dafc7b054
node StoreRef: workspace://SpacesStore
node Path: /{http://www.alfresco.org/model/application/1.0}company_home/{http://www.alfresco.org/model/site/1.0}sites/{http://www.alfresco.org/model/content/1.0}emgsap/{http://www.alfresco.org/model/content/1.0}documentLibrary/{http://www.alfresco.org/model/content/1.0}Test_x0020_CMIS_x0020_folder-5
node Type: {http://folders.cs.sap.i10n.alf.asoft.kz/model/content/17.1.6}aft_contract
{http://www.alfresco.org/model/content/1.0}created: Fri Jan 20 11:58:36 ALMT 2017
{http://folders.cs.sap.i10n.alf.asoft.kz/model/content/17.1.6}dss_balance_object: EM
{http://www.alfresco.org/model/content/1.0}creator: admin
{http://www.alfresco.org/model/system/1.0}node-uuid: c11125c1-2be9-4586-a0af-616dafc7b054
{http://www.alfresco.org/model/content/1.0}name: Test CMIS folder-5
{http://www.alfresco.org/model/system/1.0}store-protocol: workspace
{http://www.alfresco.org/model/system/1.0}store-identifier: SpacesStore
{http://www.alfresco.org/model/system/1.0}node-dbid: 1750
{http://www.alfresco.org/model/system/1.0}locale: en_US
{http://www.alfresco.org/model/content/1.0}modifier: admin
{http://www.alfresco.org/model/content/1.0}modified: Fri Jan 20 11:58:36 ALMT 2017
]
2017-01-20 11:58:36,197 [http-apr-8080-exec-7] TRACE AftContract.validateSite - Invoke
This log show, what from CMIS to Alfresco was not sending no one attribute
- no title
- no description
- no my cust/ attrs (asisapcs:*)
one successfully attribute "dss_balance_object: EM" - it not from CMIS, "EM" - it is default value (look model def. early)