Package org.apache.sling.ide.serialization

Examples of org.apache.sling.ide.serialization.SerializationManager


  public void createChild(final String childNodeName, final String childNodeType) {
      String thisNodeType = getPrimaryType();
      final SerializationKind parentSk = getSerializationKind(thisNodeType);
        final SerializationKind childSk = getSerializationKind(childNodeType);

        final SerializationManager serializationManager = Activator.getDefault().getSerializationManager();
     
      if (parentSk==SerializationKind.METADATA_FULL) {
          createDomChild(childNodeName, childNodeType);
      } else if (parentSk==SerializationKind.FILE) {
            throw new IllegalStateException("cannot create child of nt:file");
      } else if (childSk==SerializationKind.FOLDER) {
            IWorkspaceRunnable r = new IWorkspaceRunnable() {

                @Override
                public void run(IProgressMonitor monitor) throws CoreException {
                    IFolder newFolder = prepareCreateFolderChild(childNodeName);
                    if (parentSk==SerializationKind.METADATA_PARTIAL) {
                        // when the parent is partial and we're creating a folder here,
                        // then we're running into a SLING-3639 type of problem
                        // the way around this is to make a 'pointer' in the 'root'
                        // .content.xml, and have a directory structure leaving to
                        // the new node, together with a .content.xml describing
                        // the type (unless it's a nt:folder that is)
                       
                        // 1) 'pointer' in the 'root .content.xml'
                        createDomChild(childNodeName, null);
                       
                        // 2) directory structure is created above already
                        // 3) new .content.xml is done below
                    }
                    if (!childNodeType.equals("nt:folder")) {
                        createVaultFile(newFolder, ".content.xml", childNodeType);
                    }
                }
            };
         
          try {
              ResourcesPlugin.getWorkspace().run(r, null);
              if (childNodeType.equals("nt:folder") && parentSk==SerializationKind.FOLDER) {
                  // trigger a publish, as folder creation is not propagated to
                  // the SlingLaunchpadBehavior otherwise
                  //TODO: make configurable? Fix in Eclipse/WST?
                  ServerUtil.triggerIncrementalBuild((IFolder)resource, null);
              }
          } catch (CoreException e) {
              Activator.getDefault().getPluginLogger().error("Error creating child "+childNodeName+": "+e, e);
              e.printStackTrace();
              MessageDialog.openError(Display.getDefault().getActiveShell(), "Error creating node", "Error creating child of "+thisNodeType+" with type "+childNodeType+": "+e);
              return;
          }
        } else if ((parentSk == SerializationKind.FOLDER || parentSk == SerializationKind.METADATA_PARTIAL)
                && childSk == SerializationKind.METADATA_FULL) {
            createVaultFile((IFolder) resource, serializationManager.getOsPath(childNodeName) + ".xml", childNodeType);
      } else if (parentSk==SerializationKind.FOLDER && childSk==SerializationKind.METADATA_PARTIAL) {
//          createVaultFile((IFolder)resource, childNodeName+".xml", childNodeType);

            IWorkspaceRunnable r = new IWorkspaceRunnable() {

                @Override
                public void run(IProgressMonitor monitor) throws CoreException {
                    IFolder f = (IFolder)resource;
                    IFolder newFolder = null;
                    newFolder = f.getFolder(serializationManager.getOsPath(childNodeName));
                    newFolder.create(true, true, new NullProgressMonitor());
                    createVaultFile(newFolder, ".content.xml", childNodeType);
                }
            };
           
View Full Code Here

TOP

Related Classes of org.apache.sling.ide.serialization.SerializationManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.