Exemplo n.º 1
0
 @NotNull
 public List<? extends PackagingElement<?>> createElements(
     @NotNull ArtifactEditorContext context) {
   return Collections.singletonList(
       PackagingElementFactory.getInstance()
           .createArtifactElement(myArtifact, context.getProject()));
 }
Exemplo n.º 2
0
 @Override
 public void addElementsToDirectory(
     @NotNull Artifact artifact,
     @NotNull String relativePath,
     @NotNull Collection<? extends PackagingElement<?>> elements) {
   final ModifiableArtifactModel model = createModifiableModel();
   final CompositePackagingElement<?> root =
       model.getOrCreateModifiableArtifact(artifact).getRootElement();
   PackagingElementFactory.getInstance()
       .getOrCreateDirectory(root, relativePath)
       .addOrFindChildren(elements);
   new WriteAction() {
     @Override
     protected void run(@NotNull final Result result) {
       model.commit();
     }
   }.execute();
 }
 @NotNull
 private static Artifact findOrCreateWebArtifact(AppEngineFacet appEngineFacet) {
   Module module = appEngineFacet.getModule();
   ArtifactType webArtifactType =
       AppEngineWebIntegration.getInstance().getAppEngineWebArtifactType();
   final Collection<Artifact> artifacts = ArtifactUtil.getArtifactsContainingModuleOutput(module);
   for (Artifact artifact : artifacts) {
     if (webArtifactType.equals(artifact.getArtifactType())) {
       return artifact;
     }
   }
   ArtifactManager artifactManager = ArtifactManager.getInstance(module.getProject());
   PackagingElementFactory elementFactory = PackagingElementFactory.getInstance();
   ArtifactRootElement<?> root = elementFactory.createArtifactRootElement();
   elementFactory
       .getOrCreateDirectory(root, "WEB-INF/classes")
       .addOrFindChild(elementFactory.createModuleOutput(module));
   return artifactManager.addArtifact(module.getName(), webArtifactType, root);
 }
Exemplo n.º 4
0
  private <T> PackagingElement<T> deserializeElement(Element element)
      throws UnknownPackagingElementTypeException {
    final String id = element.getAttributeValue(TYPE_ID_ATTRIBUTE);
    PackagingElementType<?> type = PackagingElementFactory.getInstance().findElementType(id);
    if (type == null) {
      throw new UnknownPackagingElementTypeException(id);
    }

    PackagingElement<T> packagingElement = (PackagingElement<T>) type.createEmpty(myProject);
    T state = packagingElement.getState();
    if (state != null) {
      XmlSerializer.deserializeInto(state, element);
      packagingElement.loadState(state);
    }
    final List children = element.getChildren(PACKAGING_ELEMENT_NAME);
    //noinspection unchecked
    for (Element child : (List<? extends Element>) children) {
      ((CompositePackagingElement<?>) packagingElement).addOrFindChild(deserializeElement(child));
    }
    return packagingElement;
  }
  private static CompositePackagingElement<?> getOrCreateModifiableParent(
      CompositePackagingElement<?> parentElement, PackagingElementNode<?> node) {
    PackagingElementNode<?> current = node;
    List<String> dirNames = new ArrayList<String>();
    while (current != null && !(current instanceof ArtifactRootNode)) {
      final PackagingElement<?> packagingElement = current.getFirstElement();
      if (!(packagingElement instanceof DirectoryPackagingElement)) {
        return parentElement;
      }
      dirNames.add(((DirectoryPackagingElement) packagingElement).getDirectoryName());
      current = current.getParentNode();
    }

    if (current == null) return parentElement;
    final PackagingElement<?> rootElement = current.getElementIfSingle();
    if (!(rootElement instanceof CompositePackagingElement<?>)) return parentElement;

    Collections.reverse(dirNames);
    String path = StringUtil.join(dirNames, "/");
    return PackagingElementFactory.getInstance()
        .getOrCreateDirectory((CompositePackagingElement<?>) rootElement, path);
  }
 @NotNull
 @Override
 public CompositePackagingElement<?> createRootElement(@NotNull String artifactName) {
   return PackagingElementFactory.getInstance()
       .createArchive(ArtifactUtil.suggestArtifactFileName(artifactName) + ".apk");
 }